프리이미지
사이트 내 전체검색

PHP 질문 드립니다..

페이지 정보

작성일12-02-28 22:00

본문

 
 요즘 이 고민으로 멍 합니다.. 답변 부탁드려요.. 제발.. 부탁드립니다.. 흑흑..... ㅠㅠ
 
고민을 말하자면 C 와 PHP 둘을 소켓통신 하고 있습니다.
 
웹에서 PHP로 값을 보내고  C로는 그 값을 받아 지정해 놓은 명령어를 수행 합니다.
 
방식을 말하자면..
 
사용자가 버튼을 클릭해서 "1" 이라는 값이 POST로 전송되고 현재 페이지에서 POST 값을 받은 뒤
 
소켓 통신을 이용해 C에선 "1" 값을 받아 미리 만들어 놓은 함수에 인자로 집어 넣습니다.
 
C에서 만들어 놓은 함수 reboot(int param)이 있다고 치면 reboot(1) 을 집어 넣어 reboot이 실행이 됩니다.
 
 
문제는 여기서 입니다..
 
위 reboot() 함수는 return 값으로 "5" Fail , "10" Succes 가 있다고 했을때
 
C에서 함수의 리턴 값을 받기 위해 int return_val = 0; 을 선언하여 실행된 reboot() 함수의 리턴 값을 받아 옵니다.
 
return_val = reboot(1); 성공을 했다고 치면 return_val의 값이 "5" 가 들어가고 그것을 다시 소켓 통신을 이용해
 
PHP로 가져 옵니다. PHP에서도 역시 리턴 값을 받는 변수 return_c_val = 0; 을 선언하고 소켓 통신으로 전송된
 
C의 "5" 값이 return_c_val 에 들어가게 되는데 이때 if문으로 if (return_c_val == 5) reboot_result(); 로
 
reboot_result(); 란 함수를 호출 하는 방식 입니다.
 
 
정리하자면 이렇습니다..
 
PHP
1. 사용자 리붓 버튼 클릭.
 
2. POST 전송 $_SERVER[PHP_SELF]로 현재 페이지에 $_POST 값을 받음. (전송된 값은 "1")
 
3. $_POST 값을 소켓 통신으로 C로 보냄.
 
4. C에서 POST 값인 "1" 을 reboot(int param) 함수의 인자로 집어 넣음. reboot(1);
 
5. reboot 함수의 리턴 값을 return_val 변수에 저장. (return_val 값은 "5")
 
6. if문을 통해 리턴 값이 "5" 라면 소켓 전송으로 PHP에 보냄.
 
7. PHP 에서 "5" 라는 값을 받기 위해 return_c_val 변수에 저장함.
 
8. php 에서 if문 처리. if(return_c_val) reboot_result();
 
9. reboot_result() 함수의 로직이 실행 됨.
 
결국 사용자가 버튼 한번만 누르면 폼 전송 -> 리붓 -> 리붓결과 함수 실행까지 한큐에 오게 됩니다.
 
버튼 한번으로 폼 전송과 C에서의 처리가 무한 반복도 가능한 로직인데.. 문제는 C에서 소켓 통신을 해서
 
넘어 온 값을 분명 PHP에선 읽어들이지만 위의 예)의 마지막 단계인 reboot_result() 처리가 안됩니다.
 
혹시나 해서 if(return_c_val) alert('결과오는건가'); 이렇게 경고창으로 확인했더니 경고창 잘 뜹니다.
 
그럼 reboot_result() 함수도 호출이 되야되는데 스크립트 디버깅 해보니까 함수의 내용이 비어있다네요.
 
하지만 reboot_result() 함수는 따로 호출해도 결과 값이 잘 나옵니다..
 
긴 글이지만 혹시 이런 문제를 알고 계시다면 답변 부탁드리겠습니다.. 살려주세요..
추천 0