【发布时间】:2016-12-06 20:02:52
【问题描述】:
我有一些从其他站点获取图像的服务器。 工作几个月后。 Apache 每隔几个小时就开始崩溃。 (见帖子底部的配置)
在代码中使用日志记录的调查表明,有时 file_get_contents 会挂起,从而使 apache 进程永远处于 W 状态。已挂起的已提取文件的示例 URL:https://www.mxstore.com.au/assets/thumb/3104041-c.jpg
我在 3 个位置设置了超时,但 Apache 进程仍然永远挂起
set_time_limit (10);
ini_set('default_socket_timeout',10);
而且在上下文中(参见 timeout=>3):
$opts = array( 'http'=>array('header'=>" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" ,'timeout'=>3 ) );
$context = stream_context_create($opts);
$data= file_get_contents($product[p_img], false, $context,-1,1500000);
我怎样才能使超时工作和/或理解为什么没有获取图像?
配置: PHP 版本 5.5.9-1ubuntu4.19 Apache/2.4.7 (Ubuntu) Apache API 版本 20120211
【问题讨论】:
-
你试过使用
CURL吗?它可能会让你有更多的控制权。 -
我需要让它工作,因为它是一个现有的解决方案。转向 curl 意味着我想通过理解/解决问题来避免许多测试
-
设置超时可能不起作用,除非它在 pho.ini 文件中允许。
标签: php apache file-get-contents