我正在使用专有的第三方Drupal模块,通过curl查询第三方服务。这项服务最近变得有点松懈,这使我的页面加载速度变慢了很多,当我有大量的流量时,我正在使用max_connections。
此扩展程序查询的信息并不重要,但重要的是我不能只删除该模块。目前,我通过修补模块来修复它,为请求添加一个卷曲超时:
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
但是,我不想将黑客留在原地,因为它会在下次更新时消失,因为问题是间歇性的,它不会出现在测试中。
有没有办法在php.ini设置中全局设置超时,或者通过代码在PHP中设置超时(我可以放入自定义模块中)?
感谢任何帮助,
由于
答案 0 :(得分:9)
PHP的CURL使用php.ini设置default_socket_timeout
。默认值为60,单位为秒。
答案 1 :(得分:0)
作者和维护者声明here:
<块引用> <块引用>使用libcurl时,如果没有设置CURLOPT_CONNECTTIMEOUT,那是什么 以秒为单位的默认超时值?
根本没有。
可以在 another Stackoverflow question 上找到更完整的答案:
<块引用>libcurl 列出了以下连接超时特定设置:
PHP 源代码不会覆盖任何上述默认设置:https://github.com/php/php-src/blob/master/ext/curl/interface.c。 PHP 绑定覆盖的唯一相关参数是 CURLOPT_DNS_CACHE_TIMEOUT
,将默认值从 60 秒更改为 120 秒:https://github.com/php/php-src/blob/a0e3ca1c986681d0136ce4550359ecee2826a80c/ext/curl/interface.c#L1926
所以:不,php-curl 不支持 default_socket_timeout
设置。在调查一些客户问题时,我们甚至发现几台服务器卡住了一天(甚至几个月前)的 curl 请求。
而且似乎没有办法全局设置超时。