PHP cURL, утечка памяти при использовании CURLOPT_RETURNTRANSFER - PullRequest
4 голосов
/ 21 декабря 2010

Следующий код находится в цикле. Каждый цикл меняет $ URI на новый адрес. Моя проблема в том, что каждый проход занимает все больше и больше памяти.

$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

1 Ответ

0 голосов
/ 21 декабря 2010

Версия 5.1.6 PHP, похоже, имеет проблему с утечкой памяти при использовании «CURLOPT_RETURNTRANSFER, true» для хранения результатов cURL в виде строки.Обновление до 5.3 отсортировало утечку для меня.

Спасибо

...