0

我没有将我的 c 程序的输出输出到控制台,而是将其写入一个 php 文件以用于 ajax 调用。

C

char data[] = "ONLINE";

FILE *samplephp = fopen("/var/www/web.php", "w");
fprintf(samplephp, "<?php echo '%s'; ?>",data);
fclose(samplephp);

使用ajax调用

    $.ajax({ url: '/var/www/web.php',
         data: {action: 'test'},
         type: 'post',
         success: function(data) {

                      if(data=="ONLINE"){

$('body').append('ONLINE');

}else{

$('body').append('OFFLINE');

//loop and wait for the data to become "ONLINE"

}
                  }
});

ajax 调用应该继续读取web.php,例如循环直到数据从离线变为在线,反之亦然离线到在线。我怎样才能做到这一点?

4

1 回答 1

2

试试这段 JavaScript。另外,我认为您不必使用 PHP 脚本;一个简单的纯文本文件就足以满足您的要求,而且速度要快得多。

var fetchStatus = function() {
$.ajax({ url: '/var/www/web.php',
     data: {action: 'test'},
     type: 'post',
     success: function(data) {
         if(data=="ONLINE"){
             $('body').append('ONLINE');
         }else{
             $('body').append('OFFLINE');
         }
         setTimeout(fetchStatus, 5000); //Fetch status every 5 seconds
     }
});
};
fetchStatus();  // Start loop

对于实时应用程序,您应该尝试实现“服务器端推送”,例如 WebSocket。我正在使用用 PHP 编写的Wrench WebSocket Server ;它作为一个独立的进程运行,所以你应该找到一些方法,比如命名管道或套接字让你的 C 应用程序与之通信。这是浏览器端 WebSocket 应用程序的示例。

于 2013-05-19T09:01:42.957 回答