在PHP中从远程服务器检索文件时处理延迟

我正在使用PHP从远程服务器访问文件和照片。 我主要使用file_get_contents()和copy()函数。

有时访问一个小文本文件或照片几乎是即时的,但有时它似乎在同一个确切的文件上“卡住”一分钟。 有时它实际上会导致我的脚本挂起,甚至当我停止脚本时,Apache仍然被锁定几分钟。

我非常愿意接受互联网连接可能很脆弱的事实。 我的担心是我恢复正常,并且我没有崩溃Apache - PHP set_time_limit()函数只返回致命错误。 另外,在PHP手册中还有一个提示:在流操作上花费的时间不会影响脚本的运行时间。

我如何从这些连接问题中恢复并允许我的脚本继续? 为什么这会导致Apache挂起?

谢谢,Brian


$options = array( 'http' => array(
      'user_agent'    => 'Firefox wannabe',
      'max_redirects' => 1,
      'timeout'       => 10,
  ) );
$context = stream_context_create( $options );
$content = file_get_contents( $url, false, $context );

看看stream_context_create和HTTP Context Options。 上面的代码会在连接上设置一个超时时间,并允许一次重定向。

这应该防止达到超时。

长时间的延迟可能是由于网络或远程服务器的防火墙拒绝你一次抓取太多文件或者通过远程主机路径上的一台脆弱的DNS服务器或路由器造成的。 作为一个建议,你应该在本地缓存下载的文件,所以下一个刷新文件将在本地处理,而不是大网。

链接地址: http://www.djcxy.com/p/65589.html

上一篇: Handling delays when retrieving files from remote server in PHP

下一篇: Ember sorting hasMany relationship