1

データを提供するアプリケーション サーバーを使用しています。

アプリサーバーへの接続の応答に時間がかかる場合がありますが、実際の接続障害はありません (正常に接続されていても、低速は pingdom のダウンタイムとして記録されます)。

PHP で接続の時間を計るにはどうすればよいのでしょうか (接続がまだ応答していなくても) 一定時間後に応答が遅いイベントをログに記録できますか?

4

2 に答える 2

1

わかりましたが、これについては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 request url

2 番目のファイル (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. としてログに記録する準備が整うまでループし続けます。 「応答が遅い」インスタンス。この場合、2 番目の php ファイルが終了し、目的の結果が得られます。

于 2012-08-01T16:35:47.240 に答える
1

一つの考えが頭に浮かびました。リクエストの開始時に、 Rawr が行った提案と同様に、作成したリクエストを含むデータベース エントリまたはファイルを設定できます。次に、制限が経過した後に PHP から unix at コマンドを実行するようにトリガーできます。そのコマンドは、ファイル/データベース エントリの存在をチェックし、それに応じて動作するシェルまたは PHP スクリプトをアクティブにします。

これも同様にハックですが、余分なスクリプトを実行したりポーリングしたりする必要がなく、一度だけアクティブ化できるという利点があります。

于 2012-08-01T17:00:02.517 に答える