PHP FTP Synchronizer. Mise en ligne de site Web
Programme gratuit pour mettre à jour votre site Web à partir des fichiers locaux. PHP FTP Synchronizer parcourt récursivement l'arborescence du répertoire et met à jour le répertoire équivalent sur le site, en remplaçant les fichiers qui ont été modifiés. Il teste les liens brisés dans la page et met à jour la carte de site.
PHP FTP Synchronizer est un script dont le code source est en langage Scriptol
et produit un exécutable PHP. Compiler le source requiert le compilateur Scriptol 2.
Il fonctionne en ligne de commande.
Spécificités du programme
Par rapport aux divers programmes existants et pour la plupart commerciaux, le synchroniseur offre des options d'accélération:
- Utilisation possible d'une version de copie sur laquelle sont effectuées les comparaisons ce qui évite de télécharger le fichier distant et permet ainsi une mise à jour extrêmement rapide. En outre cela procure une seconde copie de sauvegarde du site, éventuellement sur une unité de stockage amovible.
- Possibilité de transférer tous les fichiers modifiés dans les n derniers jours, n étant un nombre de jours que vous définissez.
En outre le programme exécutable est un script en PHP, il fonctionne donc sur tous les systèmes, Windows, Linux, Mac... Et vous pouvez étendre ses possibilités si besoin.
Comment le programme fonctionne
Les paramètres utiles étant donnés (voir ci-dessous),
le programme dispose du chemin de vos fichiers, du nom du site (ftp.xxxx.tld),
votre login et mot de passe, du chemin sur l'hébergement si on ne copie
pas à la racine, ainsi que des options choisies.
Il lit chaque fichier en parcourant de façon récursive le répertoire
et les sous-répertoires, le compare avec le fichier distant s'il existe,
et le copie ou le remplace.
Si l'option d'accélération est choisie, il compare le fichier
avec le backup quand à la date précise ou le contenu au choix,
puis s'ils sont différents télécharge le fichier, le
copie sur le backup et synchronise la date de fichier du backup sur celle
de la source.
Installation
Téléchargez PHP et extrayez le dans un répertoire, par exemple:
c:\php\
Sous Windows il faut inclure ce répertoire dans la variable PATH.
Tapez "env" dans le champ de recherche de la barre des tâches, sélectionnez "path" et cliquez sur le bouton modifier. Ajoutez cette ligne:
c:\php\.
Dans le répertoire php, renommez php.ini-production en php.ini
Ajouter l'extension ftp. Editez ce fichier php.ini pour supprimer ";" devant ftp dans la liste des extensions.
Utilisation de curl
Le test de liens est plus rapide avec curl et il permet aussi de vérifier les liens en https.
Pour activer curl, supprimer ";" devant l'extension curl dans php.ini.
Pour vérifier que ce fichier ini est celui qui est pris en compte, tapez:
php --ini
Cela donnera le chemin du fichier ini chargé.
Limite de mémoire
Si le programme PHP vous dit que la mémoire est saturée ("exhausted"), vous pouvez aussi augmenter la limite dans php.ini:
memory_limit = 1024M
Comment on utilise PHP FTP Synchronizer
On ouvre l'invite de commande sous Windows ou une console sous Linux ou Mac.
On passe une commande sous la forme:
solp ftpsync [options] [paramètres] url
ou directement en PHP:
php ftpsync.php [options] [paramètres] url
Les textes entre crochets [] sont optionnels.
Exemple:
php ftpsync.php -v -llogin -pmotdepass -fftp.example.com -dw:\example\ -bf:\example\ -wwww.example.com
Les options qui sont détaillées dans le manuel permettent de passer tous les paramètres requis. Si un paramètre manque, le programme vous le demande. Mais si une option est donnée et qu'elle requiert un paramètre, celui-ci doit être fourni dans commande, il n'est pas demandé par le programme qui dans ce cas affiche une erreur.
Programme et manuel
Manuel d'utilisation de PHP FTP Synchronizer.
Problèmes possibles
- Au bout d'un moment, le programme accélère et veut télécharger
tous les fichiers sans distinction.
Cela vient d'un manque de mémoire pour permettre à PHP de faire les comparaisons et sélectionner les fichiers modifiés.
On peut augmenter la mémoire allouée dans le fichier php.ini qui se trouve dans le répertoire Windows ou équivalent sous Unix de même que le temps d'exécution accordé au script:max_execution_time = 3000 memory_limit = 1024M
- Il est possible aussi que le serveur ferme la connexion si elle dure trop longtemps. Utiliser de préférence l'unité de backup.
- Si vous avez installé Windows Live OneCare, qui limite les transferts ftp, vérifiez le fonctionnement du programme avant de l'utiliser en production.
ftpsync[options][paramètres]dirsource[url]
phillag
webmaster
function main($argc, $argv)tandis que celle-ci est appelée à la racine du script:
main($argc, $argv)ces variables sont des variable globales définies automatiquement. C'est seulement lorsque un script est appelé par les commandes http (POST) que les codes & etc. sont utilisés. Les crochets sont destinés au manuel et non au programme. Ils représentent un paramètre optionnel. Dans la commande effective, on remplace les crochets et leur contenu par un paramètre.
La cible et la source
phillag
webmaster
php ftpsync.php h:/rep/sourep/ -llogin -pmonpasse -dwww ftp.example.comL'URL est reconnue comme telle si elle commence par ftp.
Inverser le fonctionnement
hugo69
webmaster
if ftp_put(connection, rmt, src, $(FTP_BINARY)) = truepar la fonction ftp_get. Mais cela s'accompagnera aussi de nombreuses autres modifications dans le programme. Je suis un peu trop surchargé en ce moment pour envisager ce travail moi-même...
hugo69
dans le principe, il faudrait remplacer la fonction ftp_putOui, j'y avais pensé, mais le problème est que tous les listings et controles sont différents en local et en distant... Du coup, il faut faire beaucoup de changements... et plutot que de passer des heures à modifier ce script, je me disais que qqun avait du avoir le même problème t l'avait déja adapté ou trouver un script similaire... Celui ci étant si bien, ca aurait été top ...if ftp_put(connection, rmt, src, $(FTP_BINARY)) = truepar la fonction ftp_get. Mais cela s'accompagnera aussi de nombreuses autres modifications dans le programme. Je suis un peu trop surchargé en ce moment pour envisager ce travail moi-même...