2013-11-02 2 views
1

MySQL과 함께 PHP에서 Android 앱용 웹 서비스를 만들고 있습니다. 데이터가 있는지 계속 확인하고 싶습니다. 데이터를 백그라운드 프로세스로 가져 오는 방법을 알지 못합니다. 요청없이 또는 파일을 호출하지 않고 쿼리를 실행하려면 어떻게해야합니까? PHP에서 백그라운드 프로세스를 영구적으로 실행 중

내가 검색 한

$command = "php -d max_execution_time=50 -f myfile.php '".$param."' >/dev/null &"; 
exec($command); 

하지만이 코드를 삽입 할 위치 때문에이 쿼리가 계속 실행과 같은 몇 가지 코드를 가지고?

답변

3

예, 앰퍼샌드 트릭이 작동합니다. supervisord과 같이 몇 시간마다 다시 시작하면 메모리 누수가 처리됩니다. 충돌이나 매달려 있다면 이것은 또한 덜 부서지기 쉽습니다.

또한 cron과 같은 것을 사용하여 10 분 동안 작업을 실행 한 다음 죽고 cron이 다시 시작하기를 기다릴 수 있습니다. 대부분의 백그라운드 작업에서 문제가 없다는 것을 명심하십시오. 따라 잡을 것이기 때문에 작업이 실행되고 있지 않습니다. 이전 실행 여부에 상관없이 각 실행을 확인할 가치가 있습니다. 그러면 데이터베이스에서 작업을 검색 할 때 경쟁 조건을 야기하는 두 가지 백그라운드 작업이 없도록합니다.

마지막으로 Gearman과 같은 작업 서버를 사용할 수 있습니다. 이렇게하면 작업을 비동기 방식으로 보낼 수 있으며 작업자 작업 (시간 또는 우선 순위에 따라)에 의해 작업이 실행됩니다. 이것은 아마도 가장 신뢰할 수있는 접근 방법이지만 설정하는 데는 약간의 작업이 필요합니다. 이것에 대한 PHP 모듈이 있지만 내 경험에 의하면 Net_Gearman, which is available in PEAR보다 사용하기가 더 쉽습니다.

+0

thanx bro, 단순히 cron 작업을 추가하여 수행됩니다. –

관련 문제