如何解决file_get_contents()函数运行时间过长的问题? - 技术问答
最近做一个采集,用file_get_contents()函数获取对方网页内容,但是遇到某些网站打不开或者服务器相应超时,但是file_get_contents()函数会一...
最近做一个采集,用file_get_contents()函数获取对方网页内容,但是遇到某些网站打不开或者服务器相应超时,但是file_get_contents()函数会一直运行,导致整个程序运行时间过长,能不能进行一些处理,当对方服务器20秒没有反应就跳过file_get_contents()函数直接运行下面的语句???
展开
4个回答
推荐于2016-04-14
展开全部
file_get_contents() 很方便,但是没有任何控制能力,效率也比使用 fopen/fread 要慢一些。你可以用 Streams 函数来实现读取采集数据,控制连接时间等。比如:[php]$handle = @fopen(\" http://www.163.com\", \"r\");if (!$handle) {? ? die(\'Unable to open\');}// 200 毫秒stream_set_timeout($handle, 0, 200);// 采集的内容$content = stream_get_contents($handle);$info = stream_get_meta_data($handle);fclose($handle);if ($info[\'timed_out\'李雀]) {? ? print \'time out\';? ? // others} else {? ? // ....}/* vim: set expandtab tabstop=4 shiftwidth=4: */[/php]fopen 在返扰逗我的机器上漏卖面有点问题,开远程URL连接总是失败,似乎是 xdebug 的原因,你也可以试试 fsockopen 来打开连接。
2013-08-20
展开全部
7# 没有了时间控制啊,还是会一直执行的啊……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-20
展开全部
10# settimeout不是代码运行的延迟时间么?????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-20
展开全部
3# 要是php能够采集朝吵丛时的网站纯碰扮的话,估计浏览器就应该用php编写了。。。。从做灶来没指望能够打开超时的网站,只是想别让整个采集卡死在一个网站上。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询