2013-05-19 29 views
0

而不是得到我的c程序的輸出到控制檯,我把它寫到一個php文件用於ajax調用。c輸出到php和使用ajax繼續閱讀php文件的變化

Ç

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 e.g反之亦然離線循環,直到數據的變化,從離線到在線或副網上。我怎樣才能做到這一點?

回答

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;它是作爲一個獨立的進程運行的,所以你應該找到一些方法,比如named pipe或者用於你的C應用的socket來與之通信。這裏有一個browser-side WebSocket app的例子。

+0

無論如何要實時更新它嗎?不使用setTimeout? – Defyleiti

+0

@Defyleiti不,您可以嘗試WebSocket,如果您確實需要它,並將其用作舊版瀏覽器的後備工具。 – Haocheng

+0

我看到謝謝你的回答。我會研究websockets。或者你能指點我一個可以用於這種情況的websocket嗎? – Defyleiti