2010-12-21 5 views
4

다음 코드는 루프에 있습니다. 각 루프는 $ URI를 새 주소로 변경합니다. 제 문제는 각 패스가 점점 더 많은 메모리를 차지한다는 것입니다.PHP cURL, CURLOPT_RETURNTRANSFER를 사용할 때 메모리 누수가 발생했습니다.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $URI); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$res = curl_exec($ch); 
curl_close($ch); 

나는 마침내 내가 CURLOPT_RETURNTRANSFER을 주석 경우 누출 정지 줄 것을했다.

"CURLOPT_RETURNTRANSFER, true"를 사용하므로 구문 분석 할 문자열로 cURL 연산의 결과를 얻을 수 있습니다. 그러나이 문자열을 저장하는 데 사용 된 메모리는 각 패스마다 구문 분석되지 않는 것으로 보입니다. 누구나이 버퍼를 지우고 사용 된 메모리를 복구 할 수있는 방법을 제안 할 수 있습니까? 사용할 수있는 소멸자가 있습니까? __destruct()를 시도했지만 구문을 올바르게 처리 할 수없는 것 같습니다.

감사 C 문자열로 컬의 결과를 저장하기 위해 "사실, CURLOPT_RETURNTRANSFER"를 사용하는 경우 PHP 5.1.6 메모리 누출에 문제가있는 것

+1

당신은 php 5.2 또는 php 5.3을 사용하고 있습니까? php5.3에서 –

+2

을 호출하면 gc_collect_cycles() 함수를 호출 할 수 있습니다. 귀하의 루프에있는 사이클의 모든 금액 –

+0

감사. V 5.1.6. 왜 그렇게 낮은 내가 단지 그것을 막 시작했는지 확신 할 수 없다. – Columbo

답변

0

버전. 5.3로 업그레이드하면 누출이 분류됩니다.

감사합니다.

+2

나쁘다 ... PHP 버전 5.3.8에서 여전히이 문제가 있습니다 :-( –

+0

안녕하세요, 여전히이 문제로 고통 받고 있습니다. 해결책을 찾았습니까? PHP 5.3.21을 실행하고 있습니다. –

관련 문제