加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:01:57 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 PHP从远程服务器访问文件和照片.我主要使用file_get_contents()和copy()函数. 有时访问一个小文本文件或照片几乎是即时的,但有时它似乎在同一个文件上“卡
我正在使用 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服务器或路由器引起的.作为建议,您应该在本地缓存下载的文件,因此下一个刷新文件将在本地而不是大型网络中处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读