データを提供するアプリケーション サーバーを使用しています。
アプリサーバーへの接続の応答に時間がかかる場合がありますが、実際の接続障害はありません (正常に接続されていても、低速は 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 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 ファイルが終了し、目的の結果が得られます。
一つの考えが頭に浮かびました。リクエストの開始時に、 Rawr が行った提案と同様に、作成したリクエストを含むデータベース エントリまたはファイルを設定できます。次に、制限が経過した後に PHP から unix at コマンドを実行するようにトリガーできます。そのコマンドは、ファイル/データベース エントリの存在をチェックし、それに応じて動作するシェルまたは PHP スクリプトをアクティブにします。
これも同様にハックですが、余分なスクリプトを実行したりポーリングしたりする必要がなく、一度だけアクティブ化できるという利点があります。