2010-09-04 40 views
0

我意识到还有其他更直接的方式来进行FTP。但是,我特别需要能够通过FTP在文件上使用fopen。以下代码工作得很好:当通过FTP打开时控制fopen超时

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

问题是何时$ file_dest的路径无效。例如,如果$ file_dest =“1/2/3/test.txt”。

如果1,2或3文件夹不存在,那么fopen失败需要90秒。

如何减少此超时?

+0

我退出投票结束重复。在这个副本中显示的方法应该适用于1:1:http://stackoverflow.com/questions/2511225/how-to-get-fopen-to-timeout-properly – 2010-09-04 23:07:35

+0

另外一个问题是打开http,我试过了它似乎并不适用于ftp。 – Joshua 2010-09-04 23:19:18

回答

0

我会建议creating a stream context,但正如你所说,似乎没有timeout选项的FTP协议那里。

试试default_socket_timeout选项为建议的here选项是否适用于FTP操作 - 我不完全确定。

如果这样做不起作用,我不确定您是否不必使用proper FTP functions,这肯定会允许设置超时。

+0

我正在ftping的虚拟主机服务器没有磁盘io privlidges,所以我无法从磁盘读取数据。我只能访问通过http发布的文件内容。 ftp_put失败,因为源内容是文件,而不是字符串。许多网络主机拒绝文件io(但完全支持ftp!),所以我需要介绍这种情况。 – Joshua 2010-09-05 01:49:52

+0

@Joshua如何使用数据包装器作为文件资源并从中读取数据? http://www.php.net/manual/en/wrappers.data.php – 2010-09-05 09:08:49