Bonjour,
je réalise actuellement un script que j’exécuterai en tâche CRON et qui me permet de récupérer l'ensemble des fichiers et dossiers de divers sites web.
Au départ ce script s'exécutait seul.
Un tableau contenait l'ensemble des infos Clients.
Tour à tour chaque client était parcouru ainsi:
Pour ce faire j'utilisais c'est deux fonctions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Je récupére les infos ftp et sql Via socket j'execute un fichier sur le serveur distant du client qui crée un base.sql de sauvegarde. Je récupére via ftp tout les fichiers et dossiers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function charge($url) { $url=preg_replace('#^https?://#','',$url); echo $url; list($domaine,$fichier)=explode('/',$url,2); $envoi = "GET /".$fichier." HTTP/1.1\r\n"; $envoi .= "Host: ".$domaine."\r\n"; $envoi .= "Connection: Close\r\n"; $envoi .= "Content-type: text/html\r\n"; $envoi .= "Content-Length: 0\r\n\r\n"; $envoi .= "\r\n"; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if($socket < 0) return 'FATAL ERROR: socket_create() : " '.socket_strerror($socket).' "'; if (socket_connect($socket,gethostbyname($domaine),80) < 0) return 'FATAL ERROR: socket_connect()'; if(($int = socket_write($socket, $envoi, strlen($envoi))) === false) return 'FATAL ERROR: socket_write() failed, '.$int.' characters written'; socket_close($socket); return 'OK'; }Le problème avec cette solution était au niveau de variable. Les fichiers ne se chargeait pas toujours dans le dossier Client spécifié...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 function ftp_sync ( $dir, $Connexion ) { //On controle l'existance et on se place dans le dossier if ( $dir != "." ) { if ( ftp_chdir ( $Connexion , $dir ) == false ) { echo ( "Le dossier n'existe pas: $dir<BR>\r\n" ); return; } if (!( is_dir ( $dir ))) mkdir ( $dir, 0777, true ); chdir ( $dir ); } //On recupere la liste des data $contents = ftp_nlist ( $Connexion , "." ); //On lance la recuperation recursivement foreach ( $contents as $file ) { if ( $file == '.' || $file == '..' ) continue; if (@ ftp_chdir ( $Connexion , $file )) { ftp_chdir ( $Connexion , ".." ); ftp_sync ( $file, $Connexion ); } else ftp_get ( $Connexion , $file , $file , FTP_BINARY ); } ftp_chdir ( $Connexion , ".." ); chdir ( ".." ); }
J'ai donc opté pour un script qui appellerai d'autres script. Ainsi le mélange de variable n'aurait pas posé problème...
Je ne sais pas comment exécuter une liste de script php local... J'ai testé les include mais le problème et que le dossier référent est celui du script d'appel, alors que je voudrais que chaque script se refère à lui même.
Partager