Помогите исправить php / api / curl код пожалуйста - PullRequest
0 голосов
/ 19 декабря 2010

У меня есть проверка доступности домена, которая подключается к API и выводит «Доступно: и Недоступно:» из $ tmp.Приведенный ниже код будет проверять доступность только ОДИН РАЗ.

Я хотел бы проверить доступность домена несколько раз (возможно, в цикле?), без необходимости перезапускать соединение 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");

?>

@ Марк 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;
}

1 Ответ

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

Это должно ответить на ваш вопрос: Постоянный / 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 и передать новую строку на вниз. Просто сделай GetCurlPage($url).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...