PHP et FTP Warning:ftp_put() Timeout, avec ftp_pwd pour se reconnecter

7 juillet 2010 par: Benoit Bonneville

Votre script Php utilise la librarie FTP, et vous obtenez une erreur de Warning:ftp_get Timeout. La commande : ftp_pwd ne parviens pas a détécter ce timeout.

Comment gerer le Timeout

Le timeout c’est le temps d’inactivité maximal de la connexion.
Votre Script établie une première connexion, puis effectue diverse taches dont la durée dépasse se timeout.

Pour fixer le timeout il suffit d’ajouter un parametre a la fonction ftp_connect

Contrer le timeout

Il suffit d’exécuter des commandes sur la connexion FTP régulièrement.
Vous devez choisir une commande inoffensive et rapide.
Mais surtout NE CHOISSISSEZ PAS ftp_pwd.

Cette fonction a un cache interne à la librarie FTP que vous ne controllez pas. Si vous executez cette commande plusieurs fois, en fait une seule commande FTP sera envoyé et votre timeout arrivera quand même.

Je vous conseil donc d’utiliser :

$return = ftp_raw($this->conn_id,"PWD");
if($return && isset($return[0])) {
$return_code = substr(trim($return[0]),0,3);
if($return_code != "257") {
// DO YOUR RECONNECTION HERE;
}
}

C’est pas très propre, mais ça à le mérite de fonctionner.

Filed under: Développement

Répondre