0

我的 php 脚本似乎有问题,但我不知道它是什么。似乎唯一可能出错的事情与缓存有关,但我不确定。这是我的脚本,我会告诉你代码下面发生了什么:

<?php
set_time_limit(0);
header('Content-Type:text/event-stream');
$prevmod=$lastmod=filemtime('chattext.txt');
function waitformod(){
global $lastmod;
global $prevmod;
while($prevmod==$lastmod){
    usleep(100000);
    clearstatcache();
    $lastmod=filemtime('chattext.txt');
    }
echo 'data:'.file_get_contents('chattext.txt').PHP_EOL.PHP_EOL;
flush();
$prevmod=$lastmod;
}
while(true){
waitformod();
}
?>

这应该与 JavaScript EventSource 一起使用,并在其被修改时发送 chattext.txt 的内容。但是,该文件不输出任何内容。我认为这是因为无限循环。有没有什么办法解决这一问题?

4

1 回答 1

1

这样的事情会更好吗?

<?php

set_time_limit(0);
header('Content-Type:text/event-stream');

$prevmod = $lastmod = filemtime('chattext.txt');

function waitformod(){
    global $lastmod;
    global $prevmod;

    while($prevmod == $lastmod) {
        usleep(100000);
        clearstatcache();
        $lastmod = filemtime('chattext.txt');
    }

    echo 'data:'.file_get_contents('chattext.txt').PHP_EOL.PHP_EOL;
    flush();

    $prevmod = $lastmod;
}

while(1) {
    waitformod();
}

您当前的代码看起来像是读取文件,输出它,等待它更改,然后终止。

于 2012-07-30T05:16:51.800 回答