2011-01-24 2 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) несколько недостаточно. Нам нужно выполнить цикл с помощью usleep до тех пор, пока размеры не совпадут для этого url или multi_exec. Второй аргумент объявляет, что все URL-адреса завершены.

Шаги по воспроизведению:

  • PHP < 5,2, один URL со временем передачи нескольких секунд.
+0

Для сайтов без Content-Length нет размера для соответствия. Мониторинг времени передачи кажется рабочим. – anttir

1

Этот человек ударил меня по заднице. Кажется, что это ошибка в системе curl php5 (multi?). Я столкнулся с этой ошибкой при использовании многокадровой библиотеки roll-curl, но основная проблема, похоже, в самом 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 не должным образом сообщить об ошибке в завиток. Мне пришлось использовать ключ «result» из массива, возвращаемого curl_multi_info_read. Этот код результата дал мне фактический номер ошибки, когда функции curl_err * сообщили все как обычно.

Я думаю, что эта проблема связана с этим сообщением об ошибке: http://bugs.php.net/bug.php?id=52558