들어오는 소켓 요청 등을 수신하는 PHP 스크립트가 있습니다.이 스크립트를 서버에서 계속 실행해야합니다 (무한 루프 내에서 실행 됨).영구 PHP 스크립트를 계속 실행하는 방법은 무엇입니까?
이 프로세스를 어떻게 시작하고 관리 할 수 있습니까? SSH/퍼티를 통해 시작했지만 SSH 연결 시간이 지나면 스크립트가 종료됩니다.
들어오는 소켓 요청 등을 수신하는 PHP 스크립트가 있습니다.이 스크립트를 서버에서 계속 실행해야합니다 (무한 루프 내에서 실행 됨).영구 PHP 스크립트를 계속 실행하는 방법은 무엇입니까?
이 프로세스를 어떻게 시작하고 관리 할 수 있습니까? SSH/퍼티를 통해 시작했지만 SSH 연결 시간이 지나면 스크립트가 종료됩니다.
myscript.php &
이것은 당신이 아래 코멘트에 언급했다
ps aux | grep myscript.php
Patrick으로 그것을 확인할 수 있습니다 배경
를 scriptin 실행, 아니 최대 실행 시간이 없다 명령 행. myscript.php
이 무기한 실행됩니다. 당신은 우리는 최근에 비슷한 필요를했다 ignore_user_abort() 및 set_time_limit()
여기에 설명 된대로 SSH를 통해 백그라운드에서 스크립트를 실행 Getting ssh to execute a command in the background on target machine
나는 것 다음 스크립트가 여전히 실행되고 있는지 모니터링 할 수있는 방법을 제안한다. 스크립트가 포트에서 수신 대기한다고 말한 경우 포트가 아직 열려 있는지 잠시 확인하는 스크립트를 작성할 수 있습니다.
또 다른 옵션은 프로세스 ID를 모니터링하는 것입니다. 스크립트가 처음 실행될 때 getmypid
함수를 사용하여 프로세스 ID를 가져 와서 파일에 저장할 수 있습니다. ps -p 1234
을 사용하여 계속 실행 중인지 정기적으로 확인할 수 있습니다.
왜 루프 동안 할 일? 뭔가 스크립트의 정지를 트리거하는 일이 그런
do { /* your code */ } while $something == 0;
는 0
나는' $ something = 0;'은 과제이고 true/false 테스트는 아닙니다 ..) 하지만 당신도 알고 있었을 것입니다. 또 하나는 루프 시나리오에서 어떤 것을 기반으로한다면 로직 (스크립트/함수 ... 뭐든간에) 블록은 '유휴'가 유휴 상태가되지 않지만 서버 전체 또는 적어도 가상 서버 범위에서 소중한 리소스를 낭비하는 서버 CPU를 부담시킵니다. – Tore
이외의 값으로 당신은 그것을 명령 줄을 실행할 수에 $ 뭔가를 설정합니다. 시스템이 스크립트가 완료 될 때까지 기다리지 않도록하기 위해 "백그라운드에서 실행"수정자를 추가해야합니다. 기본적으로 명령 줄 끝에 &을 넣습니다.
확실히해야 할 것은 부팅 할 때 PHP 스크립트를 실행하는 ini 셸 스크립트를 만드는 것입니다. PHP 스크립트에서 실행을 위해
당신은 브라우저를 사용할 수 있습니다. Ubuntu 14.04 LTS 서버를 실행 중이므로 부팅시 프로세스를 시작하기위한 upstart
프로세스가 생성되고 어떤 이유로 든 종료되면 다시 시작됩니다.
자동 재시작을 포함하여 매우 잘 해결되었습니다. 우리의 장기 실행 프로세스는 결국 MySQL 연결을 잃게됩니다. 스크립트는 예외를 처리하고 종료하여 upstart
프로세스가 자동으로 프로세스를 다시 시작합니다. 또한 upstart
이 다시 시작하는 것을 포기하는 더 큰 오류가있는 경우를 대비하여 cron
스크립트를 추가하여 프로세스를 모니터링합니다. 간단한 재시작으로 이전 오류가 수정되지 않는 경우에 대비해 페일 세이프가 있습니다.
[복제 데몬 프로세스로 PHP 스크립트 실행] 가능한 복제본 (http://stackoverflow.com/questions/2036654/run-php-script-as-daemon-process) –
좋은 정보가 많이 있습니다. http : // stackoverflow .com/search?q = php + daemon –
ssh에서 세션을 분리하고 나중에 원할 경우 다시 연결하는 "화면"유틸리티도 확인하십시오 – regilero