[備忘]在Linux下Ubuntu系統中用定時任務執行PHP文件

之前的寫得有點籠統,這裏重新優化一下,後續繼續更新完善。

1、 先確認PHP可執行文件目錄(暫時不管它),一般爲:

/usr/bin/php

2、確認要執行的文件必須爲可用讀寫權限,我直接設置的0777

3、編輯如下命令

#用crontab -e命令打開任務編輯,如下:

*/5 * * * * curl 'http://sss.test.com/OA/OaNotice/index'   //每5分鐘定時發起一個請求

*/1 * * * * cd /www/web/www.ss.com;git pull // 每分鐘更新一次代碼

*/1 * * * * chown -R www-data:www-data /www/web/ //每分鐘刪除一次

*/1 * * * * /www/web/abc.playone.cn/task/order_warn_stask.php//每分鐘執行PHP文件

4、然後保存重啓。
提示:
啓動:sudo /etc/init.d/cron start  關閉:sudo /etc/init.d/cron stop
重啓:sudo /etc/init.d/cron restart  重新載入配置:sudo /etc/init.d/cron reload
可以用ps aux | grep cron命令查看cron是否已啓動

5、調試

確認/usr/bin/php是否爲PHP安裝目錄,一般是,但是確認起來很麻煩!(先確認其它情況吧)

確認要執行的PHP文件路徑是否與任務文件中寫的一致;

確認要執行的PHP文件代碼是否錯誤,因爲報錯之後不會有提示;

確認要執行的文件是否具有讀寫權限;

可在命令窗口中輸入命令直接訪問任務文件中要訪問的PHP文件;

例如:

php /var/www/html/task/realized_cash_task.php

看輸出結果:

PHP Fatal error:  Uncaught Error: Call to undefined function log_to_write_txt() in /var/www/html/task/realized_cash_task.php:10
Stack trace:
#0 {main}
  thrown in /var/www/html/task/realized_cash_task.php on line 10

 這裏報錯了。解決錯誤後再次執行:

看輸出結果:

這裏紅框處是沒有錯誤信息的。表示執行成功。

然後再等待任務是否自動執行。

如果這樣都不成功,那說明可能是第1步的問題。

END

================【再次完善】=================

我按照上面的步驟在新的Ubuntu環境下執行不生效!

我的調試步驟:

1、在crontab任務列表中改一下寫法(crontab -e 打開任務列表):

*/1 * * * * /var/www/html/task/realized_cash_task.php >> /var/whlog.txt

說明:意思是執行這個PHP文件同時把執行結果寫在/var/whlog.txt中,這路徑隨便你自己寫,只要能找到就行。
 

2、按照上面改完測試:

Exception: Zend Extension /var/www/html/task/realized_cash_task.php does not exist

顯示這個,大概意思就是不支持執行PHP,因爲Zend代表PHPZend引擎。

3、還是第1步的問題,解決它:

OK!經過一番冥思苦想加上詢問運維同志,得出結論就是在任務列表中/var/www/html/task/realized_cash_task.php的/var前面加上php就可以了,php後面要加空格。(還是不確定是不是第一步的問題,肯定有關係,加上php就行了,繼續寫代碼)

完整代碼:

*/1 * * * * php /var/www/html/task/realized_cash_task.php >> /var/whlog.txt

再次重啓,運行成功!

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章