0

我想在管理面板中显示一些不断变化的 cronjob 文件输出。

我知道如何通过 ajax 读取文件以及如何设置间隔。但我不知道如何在现场直播。

这是一些伪代码

$.ajax({
   url: "cronjob.php",
   live: true,
   interval: 4000,
   output: "#outputDiv", // gets updated every 4 seconds
   timeout: 30000
}).done(function() {
   alert("cronjob done.");
});

输出:

- cronjob start -
Task 1: done (2.3 seconds)
Task 2: done (214.9 seconds)
Task 3: done (19.2 seconds)
- cronjob end - 

我可以使用 iframe 来实现实时效果,但是当 cronjob 完成时我需要一个回调。

有谁知道如何处理这个问题?一个jQuery插件会很棒。

4

2 回答 2

1

我用调用 ajax 函数的间隔解决了这个问题

一些伪代码

阿贾克斯:

function cronlive(intervallid) {
    $.ajax({
            url: "cronjob.php",
            async: false, 
            type: "POST",
            success: function(response) {
                     if(response == 'finished') {
                          window.clearInterval(intervalid);
                     } else {
                          $('#log').append(response);
                     }
            }
    });
}

javascript:

  $('#showlivecron').click(function() {
       var interval = setInterval(cronlive(interval), 4000); 
  }

html:

<html>
      <head>
         <!-- include jquery -->
      </head>
      <body>
         <button id="showlivecron">Show Live Cronjobs</button>
         <div id="log"></div>
      </body>
</html>
于 2013-10-01T14:55:21.077 回答
1

Websockets 帮助您在页面上进行响应。您无需使用 setInterval 和 ajax。更像聊天应用程序

于 2013-10-01T14:58:47.983 回答