サーバーで特定のことが発生したときに、クライアント (サーバー プッシュ) でページをリロードする必要がある PHP スクリプトがあります。だから私は変化に耳を傾ける必要があります。私の考えは、現在のページのページ読み込み回数を含むテキスト ファイルを作成することです。そのため、ファイルを監視し、ファイルが変更されたらすぐにサーバー プッシュを使用して、クライアントのコンテンツを更新したいと考えています。問題は、PHP の変更についてファイルを追跡する方法です。
質問する
1419 次
3 に答える
1
次のようなことができます:
<?php
while(true){
$file = stat('/file');
if($file['mtime'] == time()){
//... Do Something Here ..//
}
sleep(1);
}
これは、毎秒ファイルの変更時刻の変化を継続的に探します。制約しないと、ディスク IO が停止する可能性があり、ulimit を調整する必要がある場合があります。
于 2012-06-19T18:27:20.037 に答える
0
これにより、ファイルの変更がチェックされます。
<?php
$current_contents = "";
function checkForChange($filepath) {
global $current_contents;
$new_contents = file_get_contents($filepath);
if (strcmp($new_contents, $current_contents) {
$current_contents = $new_contents;
return true;
}
return false;
}
しかし、それはあなたの問題を解決しません。クライアントにサービスを提供する php ファイルは、レンダリングされた html がクライアントに送信される前に実行を終了します。そのクライアントは、変更を確認するためにいくつかのphpファイルにコールバックする必要があります...そしてそれはhttpリクエストでもあるため、ファイルは実行を終了し、メモリ内のすべてを忘れます.
これを適切に解決するには、おそらくファイルをチェックするという考えを取り下げる必要があります。サーバーは、現在接続されているクライアントにいつどのように連絡するかを知る必要があるか、それらのクライアントが定期的に軽量サービスをポーリングする必要があります。
于 2012-06-19T18:29:19.300 に答える
0
これは一種のハックですが、ページを吸い込んでスコープまたはテーブルに保存し、30 秒ごとに単純に比較する cron ジョブを作成するのはどうでしょうか?
于 2012-06-19T18:32:05.120 に答える