Получено частичное тело PHP curl_multi_getcontent

Я борюсь с этой проблемой.

Тело, которое я приношу, не большое, 3100 символов. В журналах Apache на сервере говорится, что длина содержимого составляла 3100. Однако строка, возвращаемая curl_multi_getcontent, была сокращена до 1290 символов.

Обычно curl_multi_getcontent() работает нормально, но иногда возникает странное поведение.

Любые идеи?


person Antti Rytsölä    schedule 24.01.2011    source источник
comment
Можете ли вы опубликовать исходный код? См. stackoverflow.com/faq.   -  person Brad    schedule 18.03.2011


Ответы (2)


Этот ударил меня по заднице. Кажется, это ошибка в системе завитков php5 (мульти?). Я столкнулся с этой ошибкой при использовании мультикудрявой библиотеки с завитками, но основная проблема, похоже, связана с самим 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

person Will Olbrys    schedule 25.03.2011

В моем коде отсутствовала проверка выполняемых переводов.

В процессе переноса:

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-адреса завершены.

Действия по воспроизведению:

  • PHP ‹ 5.2, Один URL со временем передачи в несколько секунд.
person Antti Rytsölä    schedule 05.03.2012
comment
Для веб-сайтов без Content-Length нет подходящего размера. Мониторинг времени передачи кажется рабочим вариантом. - person Antti Rytsölä; 29.04.2012