流上下文创建没有显示正确的输出?

时间:2010-12-20 07:07:19

标签: php

我正在连接到API,因此它应该循环并输出检查结果的5次迭代。

代码

<?php

      $i = 0;

$opts = array(
  'https'=>array(
    'method'=>"POST",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

$fp = fopen('https://ssl.theapidomain.com.au/check.php?domain=testdomain&suffixes=com.au', 'r', false, $context);

    while ($i < 5) {
      fpassthru($fp);
      $out = explode('<br>', $fp);
      echo $out[0];
      echo "<br>";
      echo $out[1];
      echo "<br>";
      echo date('H:i:s');
      echo "<br>";
      $i++;
    }

fclose($fp);

?>

输出

可用:testdomain.com.au 无法使用: whoisfailure:资源ID#2

16时58分57秒

资源ID#2

16时58分57秒

资源ID#2

16时58分57秒

资源ID#2

16时58分57秒

资源ID#2

16时58分57秒

它应输出5次:

可用:testdomain.com.au 无法使用: 16时58分57秒

当我回显$ out [0]和[2]时,它会显示资源ID而不是内部信息(可用/不可用)。

1 个答案:

答案 0 :(得分:0)

您必须在该文件指针fread()上使用$fp,而不是fpassthru()。您将从fread获得字符串结果,然后您可以将其输入explode()。否则爆炸只会读取$fpResource #123之外的任何内容。

 $html = fread($fp, 16384);
 $out = explode("<br>", $html);
不过,您应该停止尝试微观优化您的域名查询thingbottleneck是网络流量,不会使循环运行得更快。 PHP流包装器并不比cURL快。