繁体   English   中英

PHP的无限循环和彗星?

[英]php infinite loop and comet?

我的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时发送其内容。 但是,该文件不输出任何内容。 我认为是由于无限循环。 有没有什么办法解决这一问题?

这样的工作效果更好吗?

<?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();
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM