优化获取HTTP状态代码的执行时间

时间:2018-12-20 03:20:22

标签: php http-status-codes execution-time

我正在开发一个简单的应用程序,该应用程序扫描页面上的所有URL并显示每个URls的http状态代码。当网址超过50个时,我出现错误 致命错误:超过30秒的最大执行时间 ,我所做的是,添加以下代码行{{1} }。它可以正常工作,我的问题是我必须等到完成后再显示整个结果,是否有办法使其在扫描时进行优化或显示结果。

谢谢。

代码

ini_set('max_execution_time', 300);

2 个答案:

答案 0 :(得分:1)

PHP同步发出http请求。为了达到预期的结果,您应该使它们异步。我建议您使用Guzzle库。简单的异步请求如下所示:

$request = new \GuzzleHttp\Psr7\Request('GET', 'http://example.com');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});

因此,异步发出50个以上的http请求,您只需获得结果即可。

答案 1 :(得分:0)

是的,因为php需要结束显示它们的过程。只有在完成所有过程后,php才会在页面中显示结果。正如@Romeo Sierra所说的,如果它在php shell中,它将随进程一起显示。 我想您要在页面中显示它吗? 你可以做到的,

  • 获取数据以在页面中创建for循环并从中创建Javascript循环。
  • 在该循环中,创建一个ajax调用,以根据循环的索引获得一个数据结果。
  • Ajax成功将数据追加到列表或表中。
  • 结果将随过程一起显示。

希望这会起作用。