PHP結合Linux的cron命令實現定時任務執行個體

來源:互聯網
上載者:User
PHP死迴圈來處理定時任務的效率是很低的。大家都建議使用Linux內建的定時任務crontab命令來調用php指令碼來實現。本文主要和大家分享PHP結合Linux的cron命令實現定時任務執行個體,希望能協助到大家。

PHP定時任務的兩種方法:
1、web方式調用php網頁,但是這樣存在安全問題,外部使用者同時也可以調用此檔案。


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

2、用php-cli 模式來調用 php指令碼,cli是以一種命令列模式來執行php指令碼


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

使用crontab -e新增工作,在/var/spool/cron下你可以看到一個root檔案。

重啟服務,使修改 生效


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/closeinvalidlive0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/magicdistributed0 0 26 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildassessment0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildprizestatement

當定時任務不起作用
定時任務,裡面執行php指令碼。
發現不能直接執行,需要切換到www使用者來執行php指令碼,
否則,指令碼所做的操作都是以 root 的許可權來執行的,比如建立檔案目錄 和 下載的圖片都是屬於 root 使用者組。
直接導致到的問題是,web網頁使用者由於許可權不足就無法對該目錄進行操作,比如root建立的目錄,web使用者無法在該目錄上傳圖片。

解決方案如下:

切換到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許可權後,待問題解決了,確定是目錄許可權不足導致指令碼無法正常啟動並執行時候,再把目錄的許可權收回來,逐步提高許可權。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.