PHP cURL超时无效

时间:2012-01-30 10:59:43

标签: php curl

我遇到了服务器问题。我正在运行本地服务器(用于开发),我已将本地服务器从MAMP更改为XAMPP。但是,在XAMPP上,cURL选项CURLOPT_TIMEOUT_MSCURLOPT_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

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

2 个答案:

答案 0 :(得分:8)

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

正确的值为156:您应该可以使用此代码:

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

请注意,您真的真的 需要添加评论,解释您为何会这样做。

答案 1 :(得分:8)

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

  

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