>  기사  >  백엔드 개발  >  PHP는 Linux의 cron 명령을 결합하여 예약된 작업 예제를 구현합니다.

PHP는 Linux의 cron 명령을 결합하여 예약된 작업 예제를 구현합니다.

小云云
小云云원래의
2018-03-21 13:19:541955검색

PHP의 무한 루프는 예약된 작업을 처리하는 데 매우 비효율적입니다. 이를 달성하려면 Linux에 내장된 예약 작업 crontab 명령을 사용하여 PHP 스크립트를 호출하는 것이 좋습니다. 이 기사에서는 주로 Linux cron 명령과 결합된 PHP를 사용하여 예약된 작업을 구현하는 예를 공유합니다.

PHP 예약 작업을 위한 두 가지 방법:
1. 웹을 통해 PHP 웹 페이지를 호출하지만 보안 문제가 있으며 외부 사용자도 동시에 이 파일을 호출할 수 있습니다.


*/1 * * * * /usr/bin/wget -q -O temp.txt http://wan.coolxap.cn/cron

2. php 스크립트를 호출하려면 php-cli 모드를 사용하세요. cli는 php 스크립트를 실행하는 명령줄 모드입니다.


* * * * * /usr/bin/php -f /root/test.php >> test.log

/var/spool/cron에 작업을 추가하려면 crontab -e를 사용하세요. 루트 파일을 볼 수 있습니다.

수정 내용을 적용하려면 서비스를 다시 시작하세요


service crond restart

crontab의 가장 세밀한 단위는 몇 분이지만 여러 작업을 시작하고 잠자기 상태로 작업을 시뮬레이션할 수 있습니다.

* * * * * /bin/date >> /tmp/date.txt
* * * * * sleep 10; /bin/date >> /tmp/date.txt   
* * * * * sleep 20; /bin/date >> /tmp/date.txt
* * * * * sleep 30; /bin/date >> /tmp/date.txt
* * * * * sleep 40; /bin/date >> /tmp/date.txt
* * * * * sleep 50; /bin/date >> /tmp/date.txt列举个真实场景:


*/1 * * * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/closeinvalidlive
0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/magicdistributed
0 0 26 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildassessment
0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildprizestatement

예약된 작업이 작동하지 않을 때
예약된 작업은 내부의 PHP 스크립트를 실행합니다.
직접 실행할 수 없는 것으로 확인되었습니다. php 스크립트를 실행하려면 www 사용자로 전환해야 합니다.
그렇지 않으면 스크립트에서 수행하는 작업은 루트 권한으로 수행됩니다. 루트 사용자 그룹에.
직접적으로 발생하는 문제는 웹 페이지 사용자가 권한 부족으로 인해 디렉터리를 운영할 수 없다는 것입니다. 예를 들어 루트로 생성된 디렉터리에서는 웹 사용자가 이 디렉터리에 이미지를 업로드할 수 없습니다.

해결 방법은 다음과 같습니다.

www 사용자로 전환하여 명령을 실행하세요


su www "-c cd /alidata/www/wwwroot/17xap/e/caidiscuz/ && /aliyun/webserver/php5.2.17/bin/php pushnews2.php -9 -u"

또한 이미지를 다운로드할 때 발견되는 문제를 해결하는 약간의 트릭이 있습니다.
인터페이스를 사용하여 특정 PHP 파일에 액세스할 때 이미지 다운로드에 실패하고 권한이 부족하여 디렉터리에서 이미지 저장 작업을 수행할 수 없다는 메시지가 표시되는 것을 발견했습니다.
그런 다음 디렉터리의 권한이 이론적으로 디렉터리 읽기 및 쓰기를 지원하는 wr-wr-wr 0666인지 확인하세요. 그런데 왜 사진을 다운로드할 수 없나요?
x 권한이 없기 때문에 mkdir, ls 등을 포함하여 이 디렉터리에서 어떤 명령도 실행할 수 없습니다. 이미지를 생성하려면 w 권한뿐만 아니라 x 권한도 필요합니다.
권한을 wrx-r-xr-x 0755로 변경하시면 정상적으로 이미지 다운로드가 가능합니다.

문제 해결 요령은 먼저 충분한 0777 권한을 부여하는 것입니다. 문제가 해결되고 디렉토리 권한이 부족하여 스크립트가 정상적으로 실행될 수 없다고 판단되면 해당 디렉토리의 권한을 다시 가져오고 점차적으로 권한을 늘리는 것입니다. .

위 내용은 PHP는 Linux의 cron 명령을 결합하여 예약된 작업 예제를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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