Php Tail-f通过javascript/jquery实现实时日志
我试图得到一个真正的尾巴f型的观众 (我让它半工作,但它不是真正的缓冲它)它重写的尾巴-20每2秒,并没有真正的缓冲它,使其滚动(需要建立一些最终保存文件,但这是稍后),如果我尝试一个尾巴-f的命令将始终执行,而不是停止Php Tail-f通过javascript/jquery实现实时日志,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我试图得到一个真正的尾巴f型的观众 (我让它半工作,但它不是真正的缓冲它)它重写的尾巴-20每2秒,并没有真正的缓冲它,使其滚动(需要建立一些最终保存文件,但这是稍后),如果我尝试一个尾巴-f的命令将始终执行,而不是停止 我需要考虑某种类型的OBFLU* *(我试着用我正在处理的ping工具,在经过几天的研究之后没有运气)在PHP.ini中设置缓冲= OFF **/P> 这是LOGTAIL.JS function getLog(timer) { var url = "logtail.ph
我需要考虑某种类型的OBFLU* *(我试着用我正在处理的ping工具,在经过几天的研究之后没有运气)在PHP.ini中设置缓冲= OFF **/P>
这是LOGTAIL.JS
function getLog(timer) {
var url = "logtail.php";
request1.open("GET", url, true);
request1.onreadystatechange = updatePage;
request1.send(null);
startTail(timer);
}
function startTail(timer) {
if (timer == "stop") {
stopTail();
} else {
t= setTimeout("getLog()",1000);
}
}
function stopTail() {
clearTimeout(t);
var pause = "The log viewer has been paused. To begin viewing again, click the Start Viewer button.\r\n\r\n";
logDiv = document.getElementById("log");
var newNode=document.createTextNode(pause);
logDiv.replaceChild(newNode,logDiv.childNodes[0]);
}
function updatePage() {
if (request1.readyState == 4) {
if (request1.status == 200) {
var currentLogValue = request1.responseText.split("\n");
eval(currentLogValue);
logDiv = document.getElementById("log");
logDiv.scrollTop = logDiv.scrollHeight;
var logLine = ' ';
for (i=0; i < currentLogValue.length - 1; i++) {
logLine += currentLogValue[i] + "<br/>\n";
}
logDiv.innerHTML=logLine;
//} else
//alert("Error! Request status is " + request1.status);
}
}
}
函数getLog(计时器){
var url=“logtail.php”;
请求1.打开(“获取”,url,true);
request1.onreadystatechange=updatePage;
请求1.发送(空);
startTail(计时器);
}
功能启动时钟(计时器){
如果(计时器=“停止”){
stopTail();
}否则{
t=setTimeout(“getLog()”,1000);
}
}
函数stopTail(){
清除超时(t);
var pause=“日志查看器已暂停。若要再次开始查看,请单击“开始查看器”按钮。\r\n\r\n”;
logDiv=document.getElementById(“日志”);
var newNode=document.createTextNode(暂停);
logDiv.replaceChild(newNode,logDiv.childNodes[0]);
}
函数updatePage(){
if(request1.readyState==4){
if(request1.status==200){
var currentLogValue=request1.responseText.split(“\n”);
eval(currentLogValue);
logDiv=document.getElementById(“日志”);
logDiv.scrollTop=logDiv.scrollHeight;
var logLine='';
对于(i=0;i \n”;
}
logDiv.innerHTML=logLine;
//}否则
//警报(“错误!请求状态为“+request1.status”);
}
}
}
您可以采取稍微不同的方法,使用Comet将消息从tail
推送到浏览器。这里有一个关于PHP/Comet的好答案:
function getLog(timer) {
var url = "logtail.php";
request1.open("GET", url, true);
request1.onreadystatechange = updatePage;
request1.send(null);
startTail(timer);
}
function startTail(timer) {
if (timer == "stop") {
stopTail();
} else {
t= setTimeout("getLog()",1000);
}
}
function stopTail() {
clearTimeout(t);
var pause = "The log viewer has been paused. To begin viewing again, click the Start Viewer button.\r\n\r\n";
logDiv = document.getElementById("log");
var newNode=document.createTextNode(pause);
logDiv.replaceChild(newNode,logDiv.childNodes[0]);
}
function updatePage() {
if (request1.readyState == 4) {
if (request1.status == 200) {
var currentLogValue = request1.responseText.split("\n");
eval(currentLogValue);
logDiv = document.getElementById("log");
logDiv.scrollTop = logDiv.scrollHeight;
var logLine = ' ';
for (i=0; i < currentLogValue.length - 1; i++) {
logLine += currentLogValue[i] + "<br/>\n";
}
logDiv.innerHTML=logLine;
//} else
//alert("Error! Request status is " + request1.status);
}
}
}