>  기사  >  운영 및 유지보수  >  Linux는 정기적으로 PHP 시작 작업 스크립트를 실행합니다(단계 분석).

Linux는 정기적으로 PHP 시작 작업 스크립트를 실행합니다(단계 분석).

铁手
铁手원래의
2022-08-12 20:53:451658검색

최근 직장에서 가끔 PHP 서비스를 재시작해야 하는 상황이 발생해서, PHP 프로세스를 재시작하기 위해 예약된 실행 스크립트를 사용할까 고민하다가, Linux를 사용하여 실행 스크립트를 작성하는 단계는 다음과 같습니다.

1단계: 예약된 스크립트 파일 cron.sh를 만듭니다(파일 이름은 선택적으로 .sh로 끝남).

참조 코드는 다음과 같습니다(log.txt는 출력 내용을 쉽게 볼 수 있는 로그 파일입니다).

echo "supervisorctl restart..." >> /var/www/html/log.txt
start_time=$(date)
echo $start_time >> /var/www/html/log.txt
echo >> /var/www/html/log.txt
supervisorctl restart all
end_time=$(date)
echo "supervisorctl end" >> /var/www/html/log.txt
echo $end_time >> /var/www/html/log.txt
echo >> /var/www/html/log.txt

저는 supervisorctl을 사용하여 PHP 프로세스를 관리합니다(supervisorctl 사용에 대한 공식 문서를 확인할 수 있습니다). 물론 다른 방법도 사용할 수 있습니다.

supervisorctl의 사용법을 간략하게 설명하는 예는 다음과 같습니다.

먼저 Supervisorctl을 설치하고 터미널에서 yum install -y supervisorct를 실행해야 합니다.

supervisorct는 기본적으로 /etc/supervisor 디렉터리에 설치됩니다.

완료 후 / 아래에 supervisord.conf 구성 파일이 있습니다. etc/supervisor 경로를 열면 끝에 [include]가 있으며 다음과 같이 파일을 구성합니다.

files = /etc/supervisor/conf.d/*.conf

그런 다음 /etc/supervisor/conf.d 디렉토리에 자신만의 구성 파일을 만들 수 있습니다. 예를 들어, test.conf 파일을 생성합니다(제 경우에는 PHP laravel 프레임워크에 의해 실행되는 소비 작업 대기열입니다). 파일 내용은 다음과 같이 구성됩니다.

[program:rabbitmq-comsumer-1]
process_name=%(program_name)s_1
command=php /var/www/html/app/artisan rabbitmq:consumer 1
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/app/storage/logs/rabbitmq-comsumer-log-1.log

2단계:

두 번째로 예약된 작업 내용을 작성하고 vim을 입력합니다. 터미널 콘솔에서 /etc/crontab을 입력하고 Enter를 누릅니다. 코드:

0 */2 * * * root  /var/www/html/cron.sh
참고: 0 */2 * * * (이것은 예약된 작업 실행 구문입니다. 저는 2시간마다 실행합니다. , 0:00, 2:00,...자동 실행 관련 구문을 참고하세요 바이두 확인)

3단계:

파일을 저장한 후 적용합니다(이 단계가 매우 중요합니다!) 다음을 실행합니다. 명령:

crontab /ect/crontab
마지막으로 다음 명령을 사용하여 수정된 결과를 볼 수 있습니다. 0 */ 2 *** 명령을 한 번에 수동으로 실행하세요.

더 흥미로운 콘텐츠를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

위 내용은 Linux는 정기적으로 PHP 시작 작업 스크립트를 실행합니다(단계 분석).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.