optimiser commande FTP

Le problème exposé dans ce sujet a été résolu.

Hello !

J’utilise la fonction FTP pour envoyer le contenu d'un dossier vers un serveur distant. Le problème, c’est que je ne souhaite optimiser tout ça en n’envoyant que les fichiers différents que ceux présent en ligne !

Mon code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php
function send_ftp($ftp_host, $ftp_user, $ftp_password, $ftp_root, $ftp_localroot, $dirs, $files) {
    if (($ftp = ftp_connect($ftp_host)) !== false) {
        ftp_login($ftp, $ftp_user, $ftp_password);
        ftp_pasv($ftp, false);
        foreach($dirs as $dir) {
            if(!in_array($dir, ftp_nlist($ftp, $ftp_root))) {ftp_mkdir($ftp, $ftp_root.$dir);}
        }
        foreach($files as $file) {
            mylog('Envoi du fichier '.$file.' sur le serveur FTP.');
            if (ftp_put($ftp, $ftp_root.$file, $ftp_localroot.$file, FTP_BINARY)) {
                mylog('Envoi du fichier '.$file.' réussi.');
            }
            else {
                mylog('Envoi du fichier '.$file.' échoué.');
            }
        }
        ftp_close($ftp);
    }
}

J’ai penser comparer le md5, mais ça semble pas marcher (à coup de file_get_contents(), il peut avoir des problèmes, mais c’est des fichiers statiques). Avez vous une idée pour résoudre ce problème ?

cordialement,

+0 -0

J’ai essayé pour la date de modification en local (inférieur à 48 h on envoie), mais y'a des couacs. On peut comparer la taille directement avec une fonction FTP sans télécharger le fichier (sans quoi mes efforts seront vain) ?

+0 -0

J’ai essayé dans mon foreach la condition : if(ftp_mdtm($ftp, $file) != filemtime($file)) semble pas fonctionner (envoie quand même)

if(ftp_size($ftp, $file) != filesize($file)) idem

Une idée ? CA envoie quand même, passant outre.

+0 -0

Quel est la taille de ton fichier ? J'ai vu que ça pouvais provoquer des soucis avec les fichiers de plus de 2Go (Information parvenu du bugtracker mais non confirmé, donc j'ai de fort doute que ce soit la cause).

Tu es bien connecté à ton ftp lors de l'envoie de cette requête ? Le fichier que tu indiques est bien présent sur le serveur ?

Note: Tous les serveurs ne supportent pas cette fonctionnalité.

Ça peut aussi être ça la cause, mais dans ce cas la je ne saurais comment t'aider…

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte