PHP如何检查外部源连接的时间长度

时间:2012-08-01 16:00:34

标签: php logging timer

我们正在使用提供数据的应用服务器。

有时与appserver的连接需要很长时间才能响应,但是没有实际的连接失败(并且慢速注册为pingdom的停机时间,即使连接成功也是如此)

如何在php中对连接进行计时,这样我可以在一段时间后记录缓慢响应的事件(即使连接尚未响应)?

2 个答案:

答案 0 :(得分:1)

好吧虽然,我必须同意这个问题。 PHP可能不是最好的语言,这是我的建议......

第一个文件:

//Write "1" to text file (loading.txt)
//Run secondary php file (loading.php) asyncronously
//I would suggest curl_post_async or exec(url)

//Start Connection

//Upon load finish write "0" to text file (loading.txt)

这是一个关于请求页面而不等待它加载的很好的讨论: php request url without waiting for response

第二个文件(loading.php):

$start=mktime();
while (true) {
    if ("loading.txt" if value = 0) {
        break;
    else if (($start-mktime()) > MAX WAIT TIME) {
        //Log as "slow-to-respond"
        break;
    }
}

您将需要修改php.ini并相应地设置最长执行时间。

我觉得这有点草率。我真的建议使用其他语言。

基本上,在你开始连接之前,你运行另一个php文件,它继续循环,直到1.它从loading.txt文件中读取你已经完成连接或2.你已准备好登录它是一个“缓慢响应”的实例。在这种情况下,第二个php文件结束,你已经达到了你想要的结果。

答案 1 :(得分:1)

我的脑子里浮现出一个想法。在请求开始时,您可以设置数据库条目或包含您所做请求的文件,类似于Rawr made的建议。然后,您可以从PHP中触发unix at command以在限制通过后运行 - 该命令将激活shell或PHP脚本,该脚本将检查文件/数据库条目的存在并相应地执行。

这同样是hacky,但它的好处是不会有额外的脚本运行和轮询,而只是激活一次。