2010-09-04 3 views
0

Je me rends compte qu'il existe d'autres moyens plus simples pour effectuer FTP. Cependant, j'ai un besoin spécifique de pouvoir utiliser fopen sur un fichier via FTP. Le code suivant fonctionne très bien:Contrôle sur fopen Timeout lors de l'ouverture via FTP

$FTP="ftp://$FTPUser:[email protected]$FTPHost/$file_dest"; 
$fp=fopen($FTP, 'w'); 

Le problème est lorsque le chemin de $ file_dest n'est pas valide. Par exemple si $ file_dest = "1/2/3/test.txt".

Si les dossiers 1, 2 ou 3 n'existent pas, l'ouverture de la fopen prend 90 secondes.

Comment puis-je réduire ce délai?

+0

Je n'ai plus de voix à fermer en double. La méthode montrée dans cette copie devrait s'appliquer 1: 1: http://stackoverflow.com/questions/2511225/how-to-get-fopen-to-timeout-properly –

+0

Cette autre question est pour fopen sur http, j'ai essayé et il ne semble pas fonctionner pour ftp. – Joshua

Répondre

0

Je l'aurais suggéré creating un stream context, mais comme vous le dites, il semble y avoir aucune option timeout pour le protocole FTP là. Essayez si l'option default_socket_timeout comme suggéré here s'applique aux opérations FTP - je ne suis pas entièrement sûr.

Si cela ne fonctionne pas, je ne suis pas sûr si vous n'avez pas besoin de recourir au proper FTP functions, ce qui permet de définir un délai d'attente.

+0

Le serveur d'hébergement Web à partir duquel je suis installé n'a pas de privilèges d'accès au disque io, donc je ne peux pas lire à partir du disque. Je n'ai accès qu'aux fichiers affichés via http. ftp_put échoue car le contenu source est un fichier et non une chaîne. Beaucoup de web-hosts refusent le fichier io (mais supportent complètement ftp!), Donc je dois couvrir ce cas. – Joshua

+0

@Joshua que diriez-vous d'utiliser un wrapper de données comme une ressource de fichier et de lire de cela? http://www.php.net/manual/fr/wrappers.data.php –

Questions connexes