PHP cURL超时无效

Tim*_* S. 5 php curl

我有服务器问题.我正在运行本地服务器(用于开发),我已将本地服务器从MAMP更改为XAMPP.但是,在XAMPP上,cURL选项CURLOPT_TIMEOUT_MS或者CURLOPT_CONNECTTIMEOUT_MS给出了下一个错误:

警告:curl_setopt()期望参数2为long,给定字符串

这是因为PHP还是cURL版本?也许配置设置?

curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);

附加信息:

  • OSX 10.6.8
  • PHP 5.3.1
  • cURL 7.19.7

提前致谢.


编辑:似乎有一些关于错误和要设置的变量的混淆.该错误表明参数2无效.不是参数3.所以CURLOPT_CONNECTTIMEOUT_MS似乎是问题所在.

curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);
            ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^
parameter:     #1                 #2               #3
Run Code Online (Sandbox Code Playgroud)

有趣的事实:var_dump(CURLOPT_CONNECTTIMEOUT_MS);显示string(25) "CURLOPT_CONNECTTIMEOUT_MS".就像错误状态一样,它是一个字符串而不是浮点数.

lon*_*day 8

出于某种原因,CURLOPT_CONNECTTIMEOUT_MS在您的PHP版本中定义不正确.我会检查你正在使用的PHP的任何分布,并找出它是否是一般错误.

正确的值是156:您应该能够使用它:

curl_setopt($this->ch, /*CURLOPT_CONNECTTIMEOUT_MS */ 156, 2500);
Run Code Online (Sandbox Code Playgroud)

NB,你真的真的真的需要添加注释解释你为什么这样做.


Rou*_*eXL 8

我有同样的问题,这解决了我.只需将此行添加到脚本的顶部即可.它仅在尚未定义时定义缺失的常量.

if(!defined(CURLOPT_CONNECTTIMEOUT_MS))define('CURLOPT_CONNECTTIMEOUT_MS',156);