我不知道怎么说这个,所以我会打出来然后编辑并回答任何问题.
目前在我的本地网络设备(基于PHP4)上我使用它来定制一个实时系统日志文件:http://commavee.com/2007/04/13/ajax-logfile-tailer-viewer/
这很好用,并且每1秒加载一个执行a的外部页面(logfile.php)tail -n 100 logfile.log .脚本不进行任何缓冲,因此它在屏幕上显示的结果是日志文件中的最后100行.
logfile.php包含:
<? // logtail.php $cmd = "tail -10 /path/to/your/logs/some.log"; exec("$cmd 2>&1", $output);
foreach($output as $outputline) {
echo ("$outputline\n");
}
?>
Run Code Online (Sandbox Code Playgroud)
这部分运作良好.
我已经调整了logfile.php页面,将$ outputline写入一个新的文本文件,只需使用 fwrite($fp,$outputline."\n");
虽然这有效但我在创建的新文件中存在重复问题.
显然每次运行tail -n 100都会产生结果,下次运行它会产生一些相同的行,因为重复这一点我最终会在新的文本文件中出现多行重复.
我不能直接比较我要写入前一行的行,因为可能有相同的匹配.
有没有什么方法可以比较当前100行的块与前一个块,然后只写不匹配的行..再次可能的问题,块A和B将包含所需的相同行...
是否可以更新logfile.php以记录它在我的日志文件中最后占用的位置,然后只读取那里的下一行并将其写入新文件?
日志文件可能高达500MB,所以我不想每次都读取它.
任何建议或建议欢迎..
谢谢
更新@ 16:30
我有点使用这个:
$file = "/logs/syst.log";
$handle = fopen($file, "r");
if(isset($_SESSION['ftell'])) {
clearstatcache();
fseek($handle, $_SESSION['ftell']);
while ($buffer = fgets($handle)) {
echo $buffer."<br/>";
@ob_flush(); @flush();
}
fclose($handle);
@$_SESSION['ftell'] = ftell($handle);
} else {
fseek($handle, -1024, SEEK_END); …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的页面,当用户点击页面上的特定条目时,它会显示状态更新.
这一切都很好.第一次单击id='sts'使用正确的输出更新 ,6秒后消失.
然而,如果用户点击另一个链接时它会逐渐消失,DIV会使用新文本进行更新,但它会根据原始淡出超时时间逐渐消失.
无论如何让DIV更新再次启动淡入淡出计数器?
这就是我目前用来进行div更新的内容.
$('.first').click(function () {
$("#sts").html('first update 1').show().fadeOut(6000);
});
$('.next').click(function () {
$("#sts").html('second update 2').show().fadeOut(6000);
});
$('.last').click(function () {
$("#sts").html('dinal update 3').show().fadeOut(6000);
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用数据表,并将数据从数据库收集到阵列中,然后显示在屏幕上。所有这些都很好。
如果数据大约是2000行7列,则只需几秒钟,但是,如果数据是10,000行7列,则可能需要30 -40秒,所以我想添加一个覆盖层,使屏幕变灰并显示“加载请稍候”
我已经尝试过在本网站和在线上找到的各种脚本和代码,但是似乎都没有用。通常,我会得到延迟,然后是覆盖层的闪烁,然后消失了。
有人可以帮忙吗?
这是我正在使用的数据表代码:
更新:这是没有数据库查询的页面。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>TEST</title>
<style type="text/css">
@import "layout_page.css";
@import "layout_table.css";
html { overflow-y: scroll; };
</style>
<link href="layout.css" rel="stylesheet" type="text/css">
<script src="jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="jquery.dataTables.min.js" type="text/javascript"></script>
<script src="jquery.jeditable.js" type="text/javascript"></script>
<script src="jquery.dataTables.editable.js" type="text/javascript"></script>
</head>
<body id="dt_test">
<div id="container"><div id="layout">
<?php
if(!function_exists('json_encode'))
{
include_once('JSON.php');
$GLOBALS['JSON_OBJECT'] = new Services_JSON();
function json_encode($value)
{ return $GLOBALS['JSON_OBJECT']->encode($value); }
function json_decode($value)
{ return $GLOBALS['JSON_OBJECT']->decode($value); }
}
//
// DB QUERIES
??
$result = json_encode($data); …Run Code Online (Sandbox Code Playgroud) PHP 4
$a = 1359994013 (Mon, 04 Feb 2013 16:06:53)
$b = 1359997483 (Mon, 04 Feb 2013 17:04:43)
Run Code Online (Sandbox Code Playgroud)
如何计算这两个时间戳之间的差异,并将结果显示为:
w days, x hours, y mins, z seconds.
Run Code Online (Sandbox Code Playgroud)
例如:0天,0小时,58分钟,10秒
谢谢 :)
如何替换字符串中的值,该值与数组中具有相同值但在其前面带有\的条目相匹配?
$test = "Mike (D)";
$array('(',')','@','-');
Run Code Online (Sandbox Code Playgroud)
As()在数组$ test中应该相等 "Mike \(D\)";
所以基本上用项目相同的项目替换项目前缀为\
我已经准备好了一些旧的代码,并且遇到了这个问题:
$sal = isset($_REQUEST['c_sal']) ? " " : ($_REQUEST['sal'] ? (Valid($_REQUEST['sal']) ? $_REQUEST['sal'] : false) : null);
Run Code Online (Sandbox Code Playgroud)
我正试图弄清楚它的作用.我知道它正在进行某种形式的验证......但是如何将其恢复为简单的if elseif语句?
所以我可以准确理解它在做什么?