我有一个 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
这有点骇人听闻,但是如何创建一个吸引页面的 cron 作业,将其存储在范围或表中,然后每 30 秒简单地比较一次呢?
于 2012-06-19T18:32:05.120 回答