我正在连接到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而不是内部信息(可用/不可用)。
答案 0 :(得分:0)
您必须在该文件指针fread()
上使用$fp
,而不是fpassthru()。您将从fread
获得字符串结果,然后您可以将其输入explode()
。否则爆炸只会读取$fp
除Resource #123
之外的任何内容。
$html = fread($fp, 16384);
$out = explode("<br>", $html);
不过,您应该停止尝试微观优化您的域名查询thing。 bottleneck是网络流量,不会使循环运行得更快。 PHP流包装器并不比cURL快。