首页 文章

在php重复运行外部程序

提问于
浏览
0

我想在Web服务器重复运行一个用c编写的程序 . 因为有些东西是php无法做到的,但是c可以轻松完成 .

我搜索并发现它可以通过在php中使用exec函数来完成 .

我在js setInterval 中使用它来每隔100ms运行一次该程序 . 但似乎该程序在网页加载时运行,在js代码中,我有相同的输出 .

例如,当我想从c程序获取当前日期时 . cpp代码是:

#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    time_t now = time(0);
    tm *ltm = localtime(&now);
    cout << 1 + ltm->tm_sec;
    return 0;
}

并且在 index.php 文件中,我每隔100ms使用此页面打印第二页 .

<script>
    setInterval(function(){
        var date = "<?php passthru("print_date.exe"); ?>";
        document.write(date + "<br>");
    },100);
</script>

但它打印始终一样!

有没有其他方法可以做到这一点?谢谢!

1 回答

  • 0

    因为php代码只执行了一次 . 使用Ajax作为选项 .

    //第二天更新1. file(index.php)

    <script>
    var aj;
    
    setInterval(function()
    {
    aj = new XMLHttpRequest();
    aj.open('GET',"/print_date.php",false);
    aj.onreadystatechange  = processData;
    aj.send(null);
    },1000);
    
    function processData()
    {
    var date = '';
    if (aj.readyState == 4) 
    {
    date = aj.responseText;
    document.write(date + "<br>")   
    }
    }
    </script>
    

    这是非常简单的同步ajax . interval是1000,而不是100,因为1000ms = 1s(C程序以秒为单位返回时间!) .

    2)所以,print_date.php是

    <?php 
     error_reporting(0); //because any warning destroys output for ajax
     passthru("print_date.exe");
    

相关问题