我在黑暗中在這裏拍攝;我不知道如何做到這一點,所以一些指針和/或有用的教程的鏈接將是偉大的:在每秒更新一次的網頁上顯示一個txt文件
我有一個網站,我想顯示一個文本文件(服務器日誌)。可能嵌入。問題是,只要服務器中發生事件(通常比半秒快),就會更新此文件。我該如何做到這一點,以便網頁實時顯示文件,即顯示文件的實時提要?
我的猜測是,它會使用JavaScript和AJAX,但我的知識都相當有限。 任何指針和幫助,將不勝感激:)
我在黑暗中在這裏拍攝;我不知道如何做到這一點,所以一些指針和/或有用的教程的鏈接將是偉大的:在每秒更新一次的網頁上顯示一個txt文件
我有一個網站,我想顯示一個文本文件(服務器日誌)。可能嵌入。問題是,只要服務器中發生事件(通常比半秒快),就會更新此文件。我該如何做到這一點,以便網頁實時顯示文件,即顯示文件的實時提要?
我的猜測是,它會使用JavaScript和AJAX,但我的知識都相當有限。 任何指針和幫助,將不勝感激:)
我的答案使用PHP和Ajax,儘管更改爲ASP或任何其他語言不會很難。
在頭
<script type="text/javascript">
function Ajax()
{
var
$http,
$self = arguments.callee;
if (window.XMLHttpRequest) {
$http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
$http = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e) {
$http = new ActiveXObject('Microsoft.XMLHTTP');
}
}
if ($http) {
$http.onreadystatechange = function()
{
if (/4|^complete$/.test($http.readyState)) {
document.getElementById('ReloadThis').innerHTML = $http.responseText;
setTimeout(function(){$self();}, 1000);
}
};
$http.open('GET', 'loadtxt.php' + '?' + new Date().getTime(), true);
$http.send(null);
}
}
</script>
在體內
<script type="text/javascript">
setTimeout(function() {Ajax();}, 1000);
</script>
<div id="ReloadThis">Default text</div>
</body>
現在使用loadtxt.php閱讀文本文件
<?php
$file = "error.txt";
$f = fopen($file, "r");
while ($line = fgets($f, 1000)) {
print $line;
}
?>
您可以使用jQuery .get每隔幾秒獲取文件並更新頁面以顯示內容。
有這樣做的各種方式......
你可以看看long polling。
堅持一個meta refresh tag每隔X秒刷新頁面。
tail -f /path/to/log.log
在終端將打開該文件的最後幾行的實時預覽 - 這是我所做的,如果我需要在調試時讀取錯誤日誌。
或者只是手動刷新頁面,可能會讓頁面自動更改它的內容。
正如你所說你的文件非常大,我會使用PHP file()
函數來從文件中抓取第一個X數量的行,以保持帶寬降低和可讀性!
功能至極的值凱文需要的是」。setInterval(Method,Duration)' – reporter
你介意提供一個jQuery的例子,以及我將如何實現它? – dukevin
http://jquery-howto.blogspot.com/2009/04/ajax-update-content-every-x-seconds.html – Jon