2013-05-19 3 views
0

내 C 프로그램의 출력을 콘솔로 가져 오는 대신 PHP 파일로 작성하여 아약스 호출에 사용했습니다. web.php 예 : 읽기 온라인에 반대 오프라인 오프라인에서 온라인 또는 그 데이터가 변경 될 때까지 반복 계속해야 Ajax 호출을c 출력을 PHP로 변경하고 아약스를 사용하여 PHP 파일을 계속 읽음

$.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 호출을 사용하여

C

char data[] = "ONLINE"; 

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

. 어떻게해야합니까?

답변

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 앱이 소켓과 통신 할 수있는 방법을 찾아야합니다. 다음은 browser-side WebSocket app의 예입니다.

+0

어쨌든 실시간으로 업데이트 하시겠습니까? setTimeout을 사용하지 않습니까? – Defyleiti

+0

@Defyleiti 아니요, 실제로 실시간으로 필요하면 WebSocket을 시도해 볼 수 있습니다. 이전 버전의 브라우저에서는이를 대체로 사용합니다. – Haocheng

+0

이 답변에 감사드립니다. 나는 웹 소켓을 조사 할 것이다. 아니면 이런 종류의 상황에 사용할 수있는 websocket을 가르쳐 주시겠습니까? – Defyleiti

관련 문제