2

我对php相当陌生。

我的电脑上有一个文本文件,它经常更改内容。我想在文件更改后立即获取文件的内容并将其插入到 html 表单中。我想在 php 上使用 filemtime 函数,但我不知道该怎么做。我确实放了一个 do while 循环:

$oldtime=filemtime($filename);
$newtime = $oldtime;
do {
    sleep (1);
    $newtime = filemtime($filename);
    echo "old: $oldtime"."<br />"; 
    echo "new: $newtime";
}
while ($newtime == $oldtime);

但这将继续执行。我也尝试过做一些 if 语句,但这对我来说也行不通。

你能建议任何方法吗?如果有任何其他功能可能会有所帮助?

谢谢你看这个帖子

4

4 回答 4

1

将您的分配切换为比较(= 表示 ==)以更正代码中的错误。

不过,这里可能还有更多问题。当您想知道信息是否已更改时,文件并不是存储信息的最佳场所。

理想情况下,您会将保存在该文件中的信息放入数据库中,您可以在其中使用触发器等有趣的东西来让您知道数据是否已更改。否则,您的解决方案将浪费时钟周期来尝试无休止地测试文件以进行更改,这不是很有效

于 2011-09-09T10:06:19.097 回答
0

Your condition in the while is logically incorrect. You are doing an assignment

$newtime = $oldtime

it should be a comparison:

$newtime == $oldtime
于 2011-09-09T10:02:40.573 回答
0

频繁轮询文件是一种发布更新的糟糕方式。

为什么不在 HTTP 请求的终点有一个 php 脚本来格式化源数据(如果源文件是远程的,可以选择缓存它)。或者使用inotify来触发静态文件的生成?

于 2011-09-09T11:52:06.540 回答
0

它一直在执行,因为您是在分配而不是比较。

这个:

while ($newtime = $oldtime);

应该是这样的:

while ($newtime == $oldtime);
于 2011-09-09T10:04:39.027 回答