我正在努力解决这个问题。
我要取的正文不是很大,3100 个字符。服务器上的 Apache 日志显示内容长度为 3100。但是,curl_multi_getcontent 返回的字符串被剪切为 1290 个字符。
通常 curl_multi_getcontent() 工作正常,但有时我们会遇到这种奇怪的行为。
有任何想法吗?
我正在努力解决这个问题。
我要取的正文不是很大,3100 个字符。服务器上的 Apache 日志显示内容长度为 3100。但是,curl_multi_getcontent 返回的字符串被剪切为 1290 个字符。
通常 curl_multi_getcontent() 工作正常,但有时我们会遇到这种奇怪的行为。
有任何想法吗?
这个踢了我的屁股。这似乎是 php5 的(多?)curl 系统中的一个错误。我在使用 rolling-curl multicurl lib 时遇到了这个错误,但根本问题似乎出在 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 返回的数组中的“结果”键。当 curl_err* 函数报告一切正常时,该结果代码给了我实际的错误号。
我认为这个问题与这个错误报告有关:http ://bugs.php.net/bug.php?id=52558
我的代码缺少正在进行的传输检查。
正在进行转移:
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 第二个参数宣布所有 url 完成。
重现步骤: