我有一个网页允许启动某个进程,然后重定向到另一个显示该进程日志文件的页面。由于执行最多需要 10 分钟,我希望日志页面自动更新或定期从文件中加载数据。
现在我添加了
<meta http-equiv="refresh" content="5;url=log.php#bottom" />
到 html/head 但想知道是否有更好的解决方案。有人可以就解决这个问题提供任何建议吗?
你可以:
我这样做:
var current_length = 0;
function update() {
setTimeout(update, 3000);
$.post("/update_url", { 'current_length': current_length }, function(data) {
if (data.current_length != current_length) return; //it's too old answer
$("#log").html($("#log").html() + data.text);
current_length += data.text.length;
}, "json");
}
update();
服务器必须在开始时跳过几个字节并发送带有 current_length 的 json 和文件的其余部分。
我更喜欢使用 memcached 来存储进程输出。
使用 AJAX 来执行此操作。在 jQuery 中很容易:
<script type="text/javascript">
$(function(){
window.setInterval('updateLog()', 5000);
});
function updateLog() {
$.get('log.php');
}
</script>
为什么不使用javascript?
使用 setInterval 并定期对 log.php 运行 AJAX 调用。
您也可以使用 iframe,但在我看来,AJAX perdiodical 调用是一种更好的方法。