在本地环境(OSX Mavericks, apache服务器)上进行测试,每次执行curl函数时都会挂起服务器。
有罪的代码行是
$result = curl_exec($ch);
这样初始化:
//initialize and setup the curl handler
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->_api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, count($params));
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//execute the request
$result = curl_exec($ch);
在执行时(已经解析了所有变量),页面只是无限期挂起。删除curl_exec命令"修复"挂起问题。
PHP 5.6.11curl 7.38.0 (x86_64-apple-darwin12.5.0)
OpenSSL/0.9.8
Apache/2.2.29 (Unix)
这个答案(修复curl_exec在Windows 8 apache中挂起)表明多个会话是问题…我已经尝试在调用curl_exec之前终止会话,但是没有任何区别。
我没有办法了!我没有调试信息,因为服务器挂起,没有返回任何东西。如果有人有任何想法,我可以尝试,我真的很感激!谢谢。
问题在于使用OSX内置的服务器功能。切换到mac专用的本地web服务应用程序MAMP解决了这个问题。