То, что у меня на месте, – это проверка доступности домена, которая соединяется с API и выводит «Доступно: и Недоступно:» из $ tmp. Ths ниже кода будет проверять наличие ONCE.
Я хотел бы проверить доступность домена несколько раз (возможно, в цикле?), Без необходимости запускать перезапуск cURL-соединения каждый раз (поскольку он тратит время – от 300 мс до 1 с на запрос) .
Я просто не знаю, как я могу подключиться к cURL один раз и запустить цикл (выполнение проверки через API). Помощь в настройке кода очень ценится! Минимизация времени, которое требуется для вывода «доступный / недоступный», и циклический контроль, является ключевым.
Спасибо.
Текущий код
<?php function GetCurlPage ($pageSpec) { $ch = curl_init($pageSpec); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $tmp = curl_exec ($ch); curl_close ($ch); $tmp = preg_replace('/(?s)<meta http-equiv="Expires"[^>]*>/i', '', $tmp); $tmp = explode('<br>', $tmp); echo $tmp[0]; echo "<br>"; echo $tmp[1]; echo "<br>"; return $tmp; } $returnUrl = "http://www.mysite.com.au/check.php"; $url = "https://www.apisite.com.au/availability/check.php?domain=testdomain&suffixes=.com.au"; $output = GetCurlPage("$url"); ?>
@Marc B
function getCurlPage($pageSpec) { if (is_null($ch)) { $ch = curl_init($pageSpec); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); } else { curl_setopt($ch, CURLOPT_URL, $pageSpec); } while ($i < 5) { $tmp = curl_exec ($ch); //curl_close ($ch); $tmp = preg_replace('/(?s)<meta http-equiv="Expires"[^>]*>/i', '', $tmp); $tmp = explode('<br>', $tmp); echo $tmp[0]; echo "<br>"; echo $tmp[1]; echo "<br>"; echo udate('H:i:s:u'); echo "<br><br>"; $i++; } return $tmp; }
Это должно ответить на ваш вопрос: Постоянный / keepalive HTTP с библиотекой PHP Curl?
комментарий:
function getCurlPage($pageSpec) { if (is_null($ch)) static $ch = curl_init($pageSpec); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); } else { curl_setopt($ch, CURLOPT_URL, $pageSpec); } $tmp = curl_exec($ch); ... do NOT close the curl handle, otherwise do the rest the same as before ... }
Наверное, не будет работать так, как есть, делая это с головы до головы и всего лишь на 2 часа сна, но этого должно быть достаточно, чтобы вы начали.
И, кстати, нет необходимости делать двойные кавычки для GetCurlPage("$url")
, это пустая трата времени парсера, поскольку PHP должен будет создать новую пустую строку, $url
в нее $url
и передать новую строку на вниз. Просто сделайте GetCurlPage($url)
.