PHP cURL超时不起作用



我遇到服务器问题。我正在运行一个本地服务器(用于开发),我已经将本地服务器从MAMP更改为XAMPP。然而,在XAMPP上,cURL选项CURLOPT_TIMEOUT_MSCURLOPT_CONNECTTIMEOUT_MS会给我下一个错误:

警告:curl_setopt()要求参数2较长,字符串给定

这是因为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"。就像错误状态一样,它是一个字符串而不是浮点值。

由于某些原因,CURLOPT_CONNECTTIMEOUT_MS在您的PHP版本中定义不正确。我会检查一下你使用的PHP的任何发行版,看看它是否是一个通用的bug。

正确的值是156:您应该可以使用它:

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

注意,您需要添加注释来解释为什么要这样做。

我遇到了同样的问题,这帮我解决了。只需将这一行添加到脚本的顶部即可。它只在尚未定义时定义缺少的常量。

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

最新更新