PHP Curl POST问题导致PHP使用100%CPU

时间:2009-11-27 13:27:48

标签: php curl libcurl

我正在尝试使用POST将数据上传到我的网络服务器,但有时cURL会停顿并导致PHP无限期地使用100%的CPU。

我正在使用以下代码。

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $URL);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
curl_setopt($curl, CURLOPT_HEADER, true);
$page = curl_exec($curl);
curl_close($curl);

对导致此问题的原因或如何跟踪此问题的任何见解都会很棒。

4 个答案:

答案 0 :(得分:1)

如果它真的是挂起并执行100%CPU的实际卷曲“调用”,那么这是一个卷曲bug,你应该考虑升级你的libcurl。

答案 1 :(得分:0)

您能确定它是否与特定文件相关吗?也许有与编码或上传长度相关的东西?

我的第一个想法是至少确定特定文件/文件集是否导致问题;在上传之前写出文件名(可能是内容)和类型,在完成之后写出文件名。这样你就可以准确地知道哪些文件导致了问题,你可以从那里继续前进。

答案 2 :(得分:0)

也许问题在于您指定的帖子数据。您可以在致电cURL之前立即var_dump($postdata)并在此处发布输出吗? cURL可能会因为类型转换/序列化问题而被挂起,或者您的帖子数据无效(希望我们可以纠正它!)。

答案 3 :(得分:-3)

升级到最新版本的PHP,PHP 5.3.1。

如果问题仍然存在,并且您的服务器正在运行Windows,请将其升级为其他任何内容,特别是* NIX形式:GNU / Linux发行版,BSD形式,SunOS等......

如果问题仍然存在,或者您认为Windows是服务器的良好操作系统[1],那么跟踪问题并发送错误报告的说明就在这里:http://bugs.php.net/how-to-report.php

[1]微软本身必须每月重启microsoft.com背后的每台机器。