>PHP 프레임워크 >Laravel >Laravel Cron 예약 작업 '점핑 피트' 지점

Laravel Cron 예약 작업 '점핑 피트' 지점

藏色散人
藏色散人앞으로
2019-11-15 14:04:523370검색

Laravel에서 예약된 작업을 실행하는 것은 cron을 통해 구현됩니다. 공식 웹사이트 문서는 단지 간단한 문장 + Cron 코드 한 줄입니다

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

그러나 실제 사용 과정에서 Linux 및 Cron에 익숙하지 않은 경우 몇 가지 문제를 접하게 됩니다. 우리는 모든 사람에게 도움이 될 수 있기를 바라며 이를 정리하고 기록하고 공유했습니다.

Pit 1: 환경 변수

Cron이 적용되지 않는 경우 잘못된 Cron 실행 환경 변수로 인해 발생할 수 있습니다.

명령을 실행하세요

env > /tmp/env.output

/tmp/env.output 파일을 열고 PATH 필드의 전체 줄을 corntab 파일의 맨 위에 추가하세요. corntab 파일은 /var/spool/cron 디렉터리

crontab에 있습니다. file example

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mysql/bin:/opt/php7/bin:/opt/memcached/bin:/root/bin
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Pit 2: Cron 실행 사용자로 인해 Laravel 로그를 쓸 수 없게 됩니다

crontab -e 명령을 통해 생성된 Cron은 예약된 작업이 실행 중에 로그를 적극적으로 기록하거나 발생하는 경우 루트 사용자에게 속합니다. 예외가 발생하지 않으면 루트 권한이 있는 로그 파일이 생성되고 결국 이로 인해 php-fpm의 www 계정에 쓸 수 없게 됩니다.

그래서 cron 생성 시 사용자를 지정해야 합니다.

crontab -u www -e

개인 관리 시스템에서는 php-fpm 실행 사용자가 www입니다. 실제 상황에 맞게 코드를 조정하세요.

Pit 3: cron 내용의 마지막 줄에 캐리지 리턴이 없습니다

위의 두 가지 문제를 해결한 후에도 여전히 cron이 실행되지 않는 경우 확인해주세요

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

캐리지 리턴과 줄이 있습니다 코드 끝에 피드를 보냅니다.

이 함정은 오후 내내 엔지니어를 괴롭혔습니다...

위 내용은 Laravel Cron 예약 작업 '점핑 피트' 지점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제