在PHP从远程服务器检索文件时处理延迟(Handling delays when retrievin

2019-08-31 08:44发布

我用PHP工作,从远程服务器访问文件和照片。 我主要使用的file_get_contents()和复印件()函数。

有时访问的小型文本文件或照片几乎是即时的,但其他时候,它似乎变得“卡住”对同一确切的文件一分钟。 有时,它实际上使我的脚本挂了,甚至当我停止脚本的Apache仍然锁定为几分钟。

我很愿意接受这样的事实,互联网连接可以是片状。 我担心的是我恢复正常,而且我不死机的Apache - PHP的参数或者set_time_limit()函数只返回一个致命错误。 此外,还有PHP手册一张纸条,上面用在流操作时间无助于脚本的运行时间。

我怎样才能从这样的连接问题中恢复,让我的脚本继续吗? 为什么会这样造成的Apache挂?

谢谢,布赖恩

Answer 1:

$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上下文选项 。 上面的代码将设置在连接上超时,并且将允许一个重定向。

这应该防止到达超时。

长时间的延时可以通过网络或通过具有防火墙拒绝您一次或路径到远程主机上的片状DNS服务器或路由器抢了太多的文件远程服务器引起的。 作为一个建议,你应该在本地缓存下载的文件,因此下一次刷新文件将在本地处理,而不是大广撒网。



文章来源: Handling delays when retrieving files from remote server in PHP