帮助固定PHP / API /卷曲code请 [英] Help fixing php/api/curl code please

查看:98
本文介绍了帮助固定PHP / API /卷曲code请的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在什么地方,是一个域名可用性检查,它连接到一个API和输出可用:和不可用:从$ TMP。低于code THS将只检查可用性一次。

我想检查域的多次可用性,无需运行重启卷曲连接每次(因为它浪费时间 - 300毫秒到每个查询1S)(可能在一个循环?)

我不知道我怎么可以连接到卷曲一次运行循环(做通过API检查)。帮助调整code将非常AP preciated!尽量减少它需要输出的时间可用/不可用和循环的检查是关键。

感谢您。

当前code

 < PHP    功能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)LT; META HTTP-EQUIV =过期[^>] *> /我','',$ TMP);
      $ TMP =爆炸('< BR>',$ TMP);
      回声$ TMP [0];
      回声< BR>中;
      回声$ TMP [1];
      回声< BR>中;
      返回$ TMP;
    }$ RETURNURL =htt​​p://www.mysite.com.au/check.php;
$ URL =htt​​ps://www.apisite.com.au/availability/check.php?domain=testdomain&suffixes=.com.au;
$输出= GetCurlPage($网址);?>

@Marc乙

 函数getCurlPage($ pageSpec){
如果(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);
}其他{
    curl_setopt($ CH,CURLOPT_URL,$ pageSpec);
}
  而($ I小于5){
  $ TMP = curl_exec($ CH);
  // curl_close($ CH);
  $ TMP = preg_replace('?/(S)LT; META HTTP-EQUIV =过期[^>] *> /我','',$ TMP);
  $ TMP =爆炸('< BR>',$ TMP);
  回声$ TMP [0];
  回声< BR>中;
  回声$ TMP [1];
  回声< BR>中;
  回声uDate公司(H:我:S:U');
  回声< BR>< BR>中;
  $ I ++;
  }
      返回$ TMP;
}


解决方案

这应该回答你的问题:<一href=\"http://stackoverflow.com/questions/972925/persistent-keepalive-http-with-the-php-curl-library\">Persistent/keepalive HTTP与PHP Curl库?

评论随访:

 函数getCurlPage($ pageSpec){
    如果(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);
    }其他{
        curl_setopt($ CH,CURLOPT_URL,$ pageSpec);
    }
    $ TMP = curl_exec($ CH);
    ......不要关闭卷曲处理,否则做休息和以前一样...
}

可能不会因为是工作,这样把我的头,用只有2个小时的睡眠顶部,但这应该足以让你开始。

顺便说一下,有没有必要做了双引号GetCurlPage($ URL),它是解析器是浪费时间,因为PHP将创建一个新空字符串,东西 $网址进去,并传递下新的字符串。只要做到 GetCurlPage($网址)

What I have in place, is a domain availability check, which connects up to an API and outputs "Available: and Unavailable:" from $tmp. Ths below code will only check the availability ONCE.

I would like to check the availability of the domain, multiple times (possibly on a loop?), without having to run restart cURL connection everytime (as it wastes time - 300ms to 1s per query).

I just don't know how I can connect to cURL once and run the loop (doing the check through the API). Help adjusting the code would be very much appreciated! Minimizing the time it takes to output "available/not available" and looping the checks is key.

Thank you.

Current code

<?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;
}

解决方案

This should answer your question: Persistent/keepalive HTTP with the PHP Curl library?

comment followup:

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 ...
}

Probably won't work as is, doing this off the top of my head and with only 2 hours sleep, but this should be enough to get you started.

And by the way, there's no need to do doublequotes for GetCurlPage("$url"), it's a waste of parser time, as PHP will have to create a new empty string, stuff $url into it, and pass the new string on down. Just do GetCurlPage($url).

这篇关于帮助固定PHP / API /卷曲code请的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆