如何每分钟运行'free -m'&添加到当前页面(仅限PHP)

时间:2011-03-14 00:39:28

标签: php javascript

我需要

    每分钟
  • 运行'free -m'
  • 然后结果添加到之前的结果

所以脚本只运行我从浏览器调用free.php。我想只使用 php 5.3 + javascript / AJAX + html (=没有cron,jQuery等)

2 个答案:

答案 0 :(得分:2)

set_time_limit(0);

$results = array();

while (TRUE) {

   system('free -m', $result);

   $results[] = $result;

   sleep(60);

}

然而,这种事情在cron中会很有用。

答案 1 :(得分:2)

我知道你不想在这里使用jQuery,但它只是一个可用的工具。您可以完全用您喜欢的任何ajax库替换它。

关键是使用Javascript timer来管理setInterval

// Here's the function that will be run.
    function get_free_mem() {
        $.get('/free_mem.php', {}, function(data){
        // data contains the HTML output from the script.
        // '#somewhere' is the HTML element that you want the
        // output of the script appended to.
            $('#somewhere').append(data);
        }, 'html');
    }
// And here's how we'll run it.
    var timer = setInterval(get_free_mem, 60 * 1000); // 60 seconds

这里是free_mem.php

<pre><?php passthru('free -m'); ?></pre>

每隔60秒,get_free_mem函数将触发,它将请求PHP脚本并将输出附加到页面上的HTML元素。

(此代码未经测试。)


(是的,我知道如果被调用的脚本需要一段时间才能返回,setInterval事情可能会适得其反并导致更新时间不均匀,并且使用setTimeout代替并在ajax完成时重新触发它更好的做法,但我相信被调用的脚本很简单,这不应该是一个太大的问题。)