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 に答える