Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何检查连接到外部源的时间长度_Php_Logging_Timer - Fatal编程技术网

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

PHP如何检查连接到外部源的时间长度,php,logging,timer,Php,Logging,Timer,我们使用的是提供数据的应用服务器 有时,到appserver的连接需要很长时间才能响应,但没有实际的连接故障(即使连接成功,速度也会在pingdom上注册为停机) 如何在php中计时连接,以便在一定时间后(即使连接尚未响应)记录慢速响应事件?好吧,不过我必须同意eis关于这一点的意见。PHP可能不是最好的语言,这里是我的建议 第一个文件: //Write "1" to text file (loading.txt) //Run secondary php file (loading.php) a

我们使用的是提供数据的应用服务器

有时,到appserver的连接需要很长时间才能响应,但没有实际的连接故障(即使连接成功,速度也会在pingdom上注册为停机)


如何在php中计时连接,以便在一定时间后(即使连接尚未响应)记录慢速响应事件?

好吧,不过我必须同意eis关于这一点的意见。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)
$start=mktime();
while (true) {
    if ("loading.txt" if value = 0) {
        break;
    else if (($start-mktime()) > MAX WAIT TIME) {
        //Log as "slow-to-respond"
        break;
    }
}
下面是一个关于在不等待页面加载的情况下请求页面的精彩讨论:

第二个文件(loading.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)
$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文件结束,您已经达到了预期的结果。

我想到了一个想法。在请求开始时,您可以设置一个数据库条目或一个包含您所做请求的文件,类似于建议的那样。然后,您可以从PHP触发unix,以便在超过限制后运行—该命令将激活一个shell或一个PHP脚本,该脚本将检查文件/数据库条目的存在性并相应地执行操作


这同样令人讨厌,但它的好处是不需要一直运行额外的脚本和轮询内容,而只需激活一次。

您想在加载时或之后记录它吗?如果是在之后,你总是可以在之前花时间,在之后花时间,如果你最终成功连接,那么就把它记录下来?在两者之间放置一个负载平衡器,并将其配置为在连接时间过长时执行某些操作。@eis,yaya,这不是我的要求。:)@rawr即使它还没有完成,如果possible@Kristian我知道,但我想知道原因,因为这可能有助于找到解决方案。虽然我认为这应该是你要问的:)他提出了一个合理的观点,但这种情况多久会发生一次。如果是一天一次什么的,哈奇可能没问题。如果一小时内重复30多次,那么应该寻找更好的方法。