2012-01-03 5 views
4

외부 정보 페이지에서 특정 데이터를 수집하는 푸시 알림 서버를 만들고 있습니다. 필요한 정보가 첫 번째 예일 때입니다. 내가 MAX_LENGTH를 말하면 PHP는 실제로 적은 메모리를 사용합니까? 또는 전체 페이지가 전체적으로 메모리에로드됩니까? 또한 HTML 페이지 전체가 다운로드되었거나 한도에 도달하면 연결이 끊어 졌습니까? (데이터 전송 비용 절감)은 PHP의 file_get_contents 메모리 및 데이터 효율적입니까?

$html = file_get_contents ("http://.....", false, null, -1, 5000); 

감사합니다.

+1

하지 , 그러나 당신이 찾을 수있는 흥미로운 : http://stackoverflow.com/questions/555523/file-get-contents-vs-curl-what-has-better - 성능 –

+0

덕분에, 나는 그것이 내가 컬링으로 전환 할 것을 확신했다고 생각한다. –

답변

2

예, 메모리와 대역폭을 절약 할 수 있습니다 ... 속도 테스트 (이 질문에 완전히 밀접하지 않지만 유용하며 스트림 읽기를 중지 할 것을 제안합니다)와 메모리 테스트 만 수행하면됩니다. 입증해라. 피크 메모리 테스트를 실행하지는 않았지만 최소한 $ html 변수는 정보를 적게 저장하고 메모리를 절약 할 것입니다.

Time to get ALL characters of remote page 10 times: 6.0368211269379 
Time to get ALL characters of remote page 10 times: 6.0158920288086 
Time to get ALL characters of remote page 10 times: 5.8945140838623 
Time to get ALL characters of remote page 10 times: 8.867082118988 
Time to get ALL characters of remote page 10 times: 5.7686760425568 

Time to get first ten characters of page 10 times: 4.2118229866028 
Time to get first ten characters of page 10 times: 4.5816869735718 
Time to get first ten characters of page 10 times: 4.2146580219269 
Time to get first ten characters of page 10 times: 4.1949119567871 
Time to get first ten characters of page 10 times: 4.1788749694824 
답변
Memory Useage First 10 characters:40048 
Memory Useage ALL characters:101064 
2

소스, here을 시작 here에 다음, 마지막으로 _php_stream_copy_to_mem 기능에 결말을 파고, 실제로는 요청 된 최대 길이에 도달하면 스트림 읽기를 중단합니다 file_get_contents() 기능처럼 보인다.

2

예, 스트림에서 스트림 기능을 사용하기 때문에 실제로 제한에 도달하면 중지됩니다. 또한 문서 페이지에 있습니다

"file_get_contents()는 파일 내용을 문자열로 읽는 가장 좋은 방법으로, OS에서 지원하는 경우 성능 향상을 위해 메모리 매핑 기술을 사용합니다."

그래서 실제로 당신에게 당신이 찾는 부스트를 제공해야합니다.