0

2 秒ごとに更新されるファイルがあります。ログ ファイルを読み取って php ファイルに投稿したいのですが、ファイルの内容を 1 回だけ読み取っているだけで、2 秒ごとに更新されていません。この場合、not_insync_text 値は 2 秒ごとに更新され続けます。これが私のコードです

<script>
    //var insync_text = <?php echo $_SESSION['IN_SYNC_COUNT'];?>;
   var not_insync_text = ["10", "11", "12", "13"];
     var question_text = ["20", "21", "22", "23"];
     var counter = 0;
     var insync = document.getElementById("insync");
     var not_insync = document.getElementById("not_insync");
     var question = document.getElementById("question");


function change() {
    <?php $output="";$output=exec('cat hello1.txt');?>
    <?php $insync_output="";$insync_output=exec('cat $INSYNC_METRICS_LOG_FILE');?>
    insync.innerHTML = "<?php echo $insync_output; ?>";
    not_insync.innerHTML = "<font color=red>" +not_insync_text[counter]+ "</font>";
    question.innerHTML = "<?php echo $output; ?>";
    counter++;
    if (counter >= not_insync_text.length) counter = 0;
}

change();
setInterval(function() {
    change()
}, 4000);

ここで、hello1.txt と $INSYNC_METRICS_LOG_FILE は増分番号 (1,2,3) で更新されます。$_SESSION['INSYNC_METRICS_VALUE'] で同じ問題に直面しています。ページを更新しない限り、1 回しか印刷されませんが、リフレッシュしたくないので、setIntervalから呼び出しています。

4

1 に答える 1

0

PHP はサーバー上で実行されます。つまり、ページが読み込まれると、すべての PHP コードが 1 回実行されます。関数 change() 内のすべての PHP は、関数を呼び出すたびにではなく、一度だけ値を吐き出します。

ページを更新せずに更新する場合は、AJAX を使用する必要があります。

于 2013-02-06T23:48:11.653 に答える