curl — PHP Multicurl работает некоторое время, затем выдает ошибку 500 на общем хостинге Godaddy

Хорошо, у меня есть скрипт, который использует скручивание для нескольких запросов. Последние два дня он работает пару раз, но затем, в конце концов, начинает выдавать ошибку 500. Я пробую обычный curl_init, и это работает, так что я знаю, что я получаю связь с сайтом, к которому я подключаюсь. И если я подожду до завтра, он снова заработает. Так что я представляю, что там какая-то утечка или что-то происходит. Я не могу понять, как проверить 500 ошибок на Godaddy. Но есть ли способ, которым я могу проверить curl, чтобы увидеть, в чем проблема или остановить его из бесконечного цикла. Потому что это не соединение. И просто, чтобы уточнить, тот же сценарий сначала работает, но после определенного количества попыток он останавливается.

while (($execrun = curl_multi_exec($this->multi_handle, $running)) ==
CURLM_CALL_MULTI_PERFORM) {
;
}

if ($execrun != CURLM_OK) {
break;
}

//not entering this loop
while ($info = curl_multi_info_read($this->multi_handle)) {

}

Изменить: я делаю около 30 запросов одновременно. Он работает очень быстро и работает как первые 4-5 раз, когда я загружаю скрипт. Но потом, в конце концов, он просто остановится, и мне придется ждать следующего дня. Вот цикл while, где единственные случаи закрытия дескрипторов. Я никогда не сталкивался с этой проблемой раньше. Понятия не имею, где искать. Он просто не подключится к сайту и не войдет в этот цикл.

        while ($info = curl_multi_info_read($this->multi_handle)) {

$ch = $info['handle'];
$ch_array_key = (int)$ch;if (!isset($this->outstanding_requests[$ch_array_key])) {
die("Error - handle wasn't found in requests: '$ch' in ".
print_r($this->outstanding_requests, true));
}

$request = $this->outstanding_requests[$ch_array_key];
$url = $request['url'];

$content = curl_multi_getcontent($ch);
$callback = $this->curl['CALLBACK'];

$user_data = $request['user_data'];

if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200)
{
call_user_func($callback, $content, $url, $ch, $user_data, $user_data);
unset($this->outstanding_requests[$ch_array_key]);

curl_multi_remove_handle($this->multi_handle, $ch);
curl_close($ch);
}
else
{
//unset the outstanding request so it doesn't get stuck in a loop
unset($this->outstanding_requests[$ch_array_key]);
curl_multi_remove_handle($this->multi_handle, $ch);
curl_close($ch);

//these come back as 0's, so not found. Restart the request
self::startRequest($url);
}
//self::msg('USER END');
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]