Я использую URL для запроса удаленных URL, которые иногда могут быть очень медленными или просто замедленными.
В этом случае мои php-скрипты все еще ждут ответа, это заставляет apache вынуждать многие запросы оставаться в памяти и затем перегружаться.
Мне нужен способ прекратить запрос curl или прекратить запуск PHP-скрипта по истечении указанного времени.
Я пытался объявить (), это не имеет смысла для локон.
Может кто-нибудь знает как это решить?
Кстати: каков эффект CURLOPT_CONNECTTIMEOUT и CURLOPT_TIMEOUT?
Вот пример кода:
function http($url, $method, $postfields = NULL) {
$ci = curl_init();
/* Curl settings */
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ci, CURLOPT_TIMEOUT, 5);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, 0);
switch ($method) {
case 'POST':
curl_setopt($ci, CURLOPT_POST, TRUE);
if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}
break;
case 'DELETE':
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
if (!empty($postfields)) {
$url = "{$url}?{$postfields}";
}
}
curl_setopt($ci, CURLOPT_URL, $url);
$response = curl_exec($ci);
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
$this->last_api_call = $url;
curl_close ($ci);
return $response;
}
Я установил время соединения и тайм-аут на 5 с, но это не сработало.
Curl по-прежнему тратит много времени на завершение запроса, но URL, если не ответ в 5 с, что означает, что он не работает или состояние сети плохое, должен остановить его.