5

POST を使用して Web サーバーにデータをアップロードしようとしていますが、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

おそらく問題は、投稿データとして指定しているものにあります。cURLvar_dump($postdata)を呼び出す直前に、出力をここに投稿していただけますか? cURL が型キャスト/シリアル化の問題でハングアップしているか、投稿データが単に無効である可能性があります (修正できることを願っています!)。

于 2009-11-29T21:11:51.300 に答える
-3

PHP の最新バージョンである PHP 5.3.1 にアップグレードします。

それでも問題が解決せず、サーバーが Windows を実行している場合は、それを他のもの、特に *NIX の形式 (GNU/Linux ディストリビューション、BSD の形式、SunOS など) にアップグレードします。

それでも問題が解決しない場合、または Windows がサーバーに適した OS だと思われる場合 [1]、問題を追跡してバグ レポートを送信する手順については、こちらをご覧ください: http://bugs.php.net/how-to- report.php

[1] Microsoft 自体が、microsoft.com の背後にある各マシンを毎月再起動する必要があります。

于 2009-11-27T15:36:22.370 に答える