【问题标题】:Control Over fopen Timeout When Opening Via FTP通过 FTP 打开时对 fopen 超时的控制
【发布时间】:2010-09-05 07:35:52
【问题描述】:

我知道还有其他更直接的方式来执行 FTP。但是,我特别需要能够通过 FTP 对文件使用 fopen。以下代码效果很好:

$FTP="ftp://$FTPUser:$FTPPass@$FTPHost/$file_dest";
$fp=fopen($FTP, 'w');

问题在于 $file_dest 的路径无效。例如,如果 $file_dest="1/2/3/test.txt"。

如果 1、2 或 3 文件夹不存在,则 fopen 需要 90 秒才能失败。

如何减少此超时?

【问题讨论】:

  • 我没有投票权作为重复关闭。此副本中显示的方法应适用 1:1:stackoverflow.com/questions/2511225/…
  • 另一个问题是关于 http 上的 fopen,我试过了,它似乎不适用于 ftp。

标签: php ftp


【解决方案1】:

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

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

如果这不起作用,我不确定您是否不必求助于proper FTP functions,它肯定允许设置超时。

【讨论】:

  • 我从中进行 ftping 的虚拟主机服务器没有磁盘 io 权限,因此我无法从磁盘读取。我只能访问通过 http 发布的文件内容。 ftp_put 失败,因为源内容是文件,而不是字符串。许多网络主机拒绝文件 io(但完全支持 ftp!),所以我需要介绍这种情况。
  • @Joshua 如何使用数据包装器作为文件资源并从中读取? php.net/manual/en/wrappers.data.php
猜你喜欢
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
相关资源
最近更新 更多