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

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

藏色散人
풀어 주다: 2019-11-15 14:04:52
앞으로
3366명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿