PHP cURL超时不起作用
我的服务器有问题。我正在运行一个本地服务器(用于开发),我已经将本地服务器从MAMP更改为XAMPP。但是,在XAMPP上,cURL选项PHP cURL超时不起作用,php,curl,Php,Curl,我的服务器有问题。我正在运行一个本地服务器(用于开发),我已经将本地服务器从MAMP更改为XAMPP。但是,在XAMPP上,cURL选项CURLOPT_TIMEOUT_MS或CURLOPT_CONNECTTIMEOUT_MS给了我下一个错误: 警告:curl_setopt()要求参数2为长字符串 这是因为PHP还是cURL版本?也许是配置设置 curl\u setopt($this->ch,CURLOPT\u CONNECTTIMEOUT\u MS,2500) 其他信息: OSX 10.6.8
CURLOPT_TIMEOUT_MS
或CURLOPT_CONNECTTIMEOUT_MS
给了我下一个错误:
警告:curl_setopt()要求参数2为长字符串
这是因为PHP还是cURL版本?也许是配置设置
curl\u setopt($this->ch,CURLOPT\u CONNECTTIMEOUT\u MS,2500)代码>
其他信息:
- OSX 10.6.8
- PHP 5.3.1
- 卷曲7.19.7
提前谢谢
编辑:对于错误和要设置的变量,似乎存在一些混淆。错误表明参数2无效。非参数3。因此,CURLOPT\u CONNECTTIMEOUT\u MS
似乎是问题所在
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);
^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
parameter: #1 #2 #3
有趣的事实:var\u dump(CURLOPT\u CONNECTTIMEOUT\u MS)代码>显示字符串(25)“CURLOPT\u CONNECTTIMEOUT\u MS”
。就像错误状态一样,它是一个字符串而不是一个浮点。由于某种原因,CURLOPT\u CONNECTTIMEOUT\u MS
在您的PHP版本中定义不正确。我会检查你正在使用的PHP的任何发行版,看看它是否是一个普通的bug
正确的值为156
:您应该可以使用该值:
curl_setopt($this->ch, /*CURLOPT_CONNECTTIMEOUT_MS */ 156, 2500);
注意,你真的需要添加注释来解释你为什么这样做。我也遇到了同样的问题,这为我解决了问题。只需将这一行添加到脚本的顶部。它仅在尚未定义时定义缺少的常量
如果(!defined(CURLOPT_CONNECTTIMEOUT_MS))定义('CURLOPT_CONNECTTIMEOUT_MS',156)
您是否尝试过curl\u setopt($this->ch,CURLOPT\u CONNECTTIMEOUT\u MS,2500.0)代码>?尝试检查、
和2500
之间是否存在不可打印字符(不可分割的空格),如果可以的话,尝试在值之前使用cast操作符(int)
。@Sim这是双浮
,不是长
,这不应该起作用。@Sim查看错误。这是关于参数2,它是CURLOPT\u CONNECTTIMEOUT\u MS
常量。我不认为我的问题在于设定的价值。不管怎样,我已经测试过了,它没有帮助。不管怎样,谢谢。你能为这个常数做一个演员吗?与(int)CURLOPT\u CONNECTTIMEOUT\u MS
中一样。我不完全确定这是否合法:)工作起来很有魅力!谢谢!谢谢你,但是我能问一下你是怎么知道解决办法的吗?有很多关于CURL超时不工作的问题,在某处和其他地方——有没有可能类似的修复可以作为CURL超时不工作的答案?我和其他人都有这个。如果你认为这是解决问题的方法,我可以提出一个新问题。总而言之,我能问一下在你的答案中提供“156”的文档在哪里吗?@GeoffKendall对不起,我写这个答案已经很久了。上面的评论说明了这个问题,但我不记得我可能做过什么研究。通过执行var\u dump(CURLOPT\u CONNECTTIMEOUT\u MS),我从自己的系统中获得了值代码>我不认为它在任何地方都有定义。感谢寂寞的一天,我做了“闻咖啡”和谷歌它-它在这里和其他地方。事实证明,常数对我来说很好,但值得一看。