2011-01-24 11 views
1

私はこの問題に苦しんでいます。PHP curl_multi_getcontent部分体を受け取りました

私がフェッチしているボディは、3100文字の大きなものではありません。サーバー上のApacheログには、コンテンツの長さは3100と表示されます。ただし、curl_multi_getcontentによって返された文字列は1290文字に切り詰められました。

通常、curl_multi_getcontent()は正常に動作しますが、時々この奇妙な動作が発生します。

アイデア?

+0

ソースコードを投稿できますか? http://stackoverflow.com/faq – Brad

答えて

0

私のコードは、進行中の転送のためのチェックが欠落していました。進行中の転送に

http_code = 200 
errno = 0 
download_content_length = total length, e.g. 1M 
size_download = current position, <= download_content_length 

はしばらく(curlm_multi_exec == CURLM_CALL_MULTI_PERFORM)がやや不十分であると思われます。 このurlまたはmulti_execの2番目の引数に一致するサイズがすべてのURLが終了したことを通知するまで、usleepをループする必要があります。再現する

ステップ:

  • PHP < 5.2、数秒の転送時間を持つ1つのURL。
+0

を参照してください。Content-Lengthのないウェブサイトには一致するサイズはありません。監視転送時間は働くオプションです。 – anttir

1

これは私のお尻を蹴った。それはphp5(マルチ?)カールシステムのバグのようです。ローリングカールのマルチカーソルライブラリを使用しているときにこのバグが発生しましたが、根底にある問題はPHP自体にあるようです。 (CURLOPT_TIMEOUTが限界に達していた私の場合には)いくつかの状況下

PHP 5.3.3-1ubuntu9.3 with Suhosin-Patch (cli) (built: Jan 12 2011 16:07:38) 
Copyright (c) 1997-2009 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 

curl_errorとcurl_errnoが適切にカールにエラーを報告しません。ここに私のphp -vです。 curl_multi_info_readによって返された配列から 'result'キーを使用しなければなりませんでした。 curl_err *関数がすべてを正常として報告したとき、その結果コードは私に実際のエラー番号を与えました。

私はこの問題は、このバグレポートに関連していると思う:http://bugs.php.net/bug.php?id=52558

関連する問題