我正在努力解决这个问题。
我所取得的身体不是很大,3100个字符。服务器上的Apache日志表示内容长度为3100.但是,curl_multi_getcontent返回的字符串被剪切为1290个字符。
通常curl_multi_getcontent()工作正常,但有时我们会得到这种奇怪的行为。
有什么想法吗?
答案 0 :(得分:1)
这个踢了我的屁股。它似乎是php5(多?)卷曲系统中的一个错误。我在使用rolling-curl multicurl lib时遇到了这个bug,但潜在的问题似乎是在php本身。这是我的php -v:
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
在某些情况下(在我的情况下,CURLOPT_TIMEOUT被最大化),curl_error和curl_errno将无法正确报告curl中的错误。我不得不使用curl_multi_info_read返回的数组中的'result'键。当curl_err *函数报告一切正常时,结果代码给了我实际的错误号。
我认为此问题与此错误报告有关:http://bugs.php.net/bug.php?id=52558
答案 1 :(得分:0)
我的代码错过了对正在进行的转移的检查。
正在进行转移:
http_code = 200 errno = 0 download_content_length = total length, e.g. 1M size_download = current position, <= download_content_length
似乎while(curlm_multi_exec == CURLM_CALL_MULTI_PERFORM)有点不足。 我们必须循环使用usleep,直到这个url的大小匹配或multi_exec第二个参数宣布所有网址都已完成。
重现的步骤: