ボタンをクリックしたときに関数を呼び出すためにjQueryを使用しています。この関数はPHPで呼び出され、ロギング情報を返します。私はsetInterval()
を使用しようとしましたが、私が選択した速度で関数を呼び出し、重複するロギング情報を返す傾向があり、ほとんどの場合はフリーズします。 jQueryからPHP関数を繰り返し呼び出す方法はありますが、最後の呼び出しが終了して返された後に関数を呼び出すだけですか?jQueryのsetIntervalの代替手段は何ですか?
はここで作るjQueryのコードはここsetInterval()
setInterval(
function(){
$.getJSON("ajax.php?function=tail&pointer=" + ftell,
function(data){
var obj = [];
obj = $.parseJSON(data);
ftell = obj[0];
$("#tail").append(obj[1]);
});
}, 2000);
を含み、それはAJAX呼び出しのコールバック関数に
function tail(){
$file = "/path/to/the/log/file.log";
$handle = fopen($file, "r");
clearstatcache();
$currentSize = filesize($file);
$offset = $_REQUEST['pointer'] - $currentSize;
if ($_REQUEST['pointer'] == 0) {
fseek($handle, -1024, SEEK_END);
} else {
fseek($handle, $_REQUEST['pointer'], SEEK_END);
}
while ($buffer = fgets($handle)) {
$log .= $buffer . "<br />";
}
fclose($handle);
$results = array('0' => $currentSize, '1' => str_replace('"', '\"', $log));
echo json_encode($results);
}
再帰的コールバック。 – zzzzBov
見るべきいくつかのコードが役に立ちます。 – j08691