2011-01-24 3 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와 일치 할 때까지 usleep을 반복해야합니다. 두 번째 인수는 모든 URL이 완료되었음을 알립니다. 재현

단계 :

  • PHP < 5.2, 몇 초간의 전송 시간에 하나 개의 URL입니다.
+0

콘텐츠 길이가없는 웹 사이트의 경우 일치시킬만한 크기가 없습니다. 모니터링 전송 시간이 작동하는 것 같습니다. – anttir

1

이 사람이 내 엉덩이를 걷어차. php5 (멀티?) 컬 시스템의 버그 인 것 같습니다. 롤 curl multicurl lib를 사용하는 동안이 버그가 발생했지만 근본적인 문제는 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

관련 문제