5

我正在尝试使用 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

4 回答 4

1

如果它真的是挂起并执行 100% CPU 的实际 curl“调用”,那么这是一个 curl 错误,您可能应该考虑升级您的 libcurl。

于 2009-11-27T18:43:57.033 回答
0

你能确定它是否与特定文件有关吗?也许与编码或上传长度有关?

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

于 2009-11-27T15:47:57.883 回答
0

也许问题在于您指定为发布数据的内容。var_dump($postdata)您可以在调用 cURL 之前做一个正确的操作并在此处发布输出吗?cURL 可能会因类型转换/序列化问题而陷入困境,或者您的帖子数据根本无效(希望我们可以更正它!)。

于 2009-11-29T21:11:51.300 回答
-3

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

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

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

[1] 微软自己每个月都要重启microsoft.com后面的每台机器。

于 2009-11-27T15:36:22.370 回答