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


PHP how to check time length of connection to outside source

我们使用的是一个提供数据的应用程序服务器。

有时,到应用服务器的连接需要很长时间才能响应,但没有实际的连接故障(即使连接成功,速度缓慢也会在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)

以下是关于请求页面而不等待加载的精彩讨论:php请求url而不等待响应

第二个文件(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文件中读取您已经完成了连接OR 2。您已经准备好将其作为"响应缓慢"实例进行日志记录。在这种情况下,第二个php文件结束,您已经获得了所需的结果。

我想到了一个主意。在请求开始时,您可以设置一个数据库条目或一个文件,其中包含您提出的请求,类似于Rawr提出的建议。然后,您可以从PHP触发unix at命令,在您的限制通过后运行-该命令将激活一个shell或一个PHP脚本,该脚本将检查文件/数据库条目的存在并采取相应的行动。

这同样很麻烦,但它的好处是不需要额外的脚本一直运行和轮询,而是只激活一次。