php添加linux定时任务,PHP与Linux定时任务
定時任務在實際開發中用到是非常多的,這里也簡單說說PHP怎么執行定時任務。我們都知道PHP是一門解釋性語言,當我們在瀏覽器中輸入某個URL時,我們才能去執行PHP,但是如果不訪問URL呢,怎么讓PHP跑起來?這個問題,可能大家都沒有仔細思考過,當然我也沒有考慮過,,,,
PHP的定時任務其實就是讓PHP腳本每隔一段時間運行一次,這就需要結合Linux的crontab了。下面我們需要先了解一下crontab。
Linux crontab命令
Linux crontab是用來定期執行程序的命令。先看一下下面幾個命令。
crontab -e??//編輯定時任務
crontab -r?//刪除定時任務
crontab -l? //列出當前定時任務
除此之外你還需要知道的是,定時任務的格式是怎么樣的
f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程序。
當 f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程序,其余類推
當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其余類推
當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其余類推
當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其余類推
通過一個實例來了解定時任務
首先我們在Linux下任一目錄新建index.php文件<?php
$path = dirname(__FILE__) . '/data.txt';
if (!file_exists($path)) {
file_put_contents($path, 0);
} else {
$num = file_get_contents($path);
file_put_contents($path, $num + 1);
}
這段代碼的意思在data.txt中寫一個數字,并且每次執行將數字更新+1。
然后我們使用crontab -e命令來創建定時任務,內容為下*/1 * * * * php /www/wwwroot/crontab/index.php
這樣其實定時任務就建好了,這句代碼的意思是沒過一分鐘執行一次這個目錄下的index.php文件一次。
代碼寫好了,我們需要看定時任務是不是成功執行了。tail -f /var/log/cron
使用該命令才看定時任務日志,下面就說明定時任務已經成功執行了。
接下來我們可以看一下,index.php同目錄下是不是多了一個'data.txt'的文件,如果有說明我們已經成功了,并且文件中的值會每過一分鐘+1。
如果,如果并沒有出現預期的結果,那么,,,開始排查bug吧,這是每個程序員都會經歷的,同樣的代碼,同樣的操作,為啥會出現不一樣的結果??!!(抓狂)
冷靜一下,開始找bug了,首先你的確保自己的定時任務執行了,自己通過crontab日志確定,然后再想是不是代碼的問題,php index.php先手動執行試試,咦,手動執行竟然也沒出現預料的結果,開始仔細檢查代碼,而又想到自己在本地windows下能夠完美運行該文件,那么如果有問題,可能出現在Windows和Linux系統的差異上,路徑?權限?
想到就試試,將代碼里的路徑換成絕對路徑,并使用“/”連接(windows路徑連接符是“\”),最后賦予index.php寫和執行的權限chmod 777 index.php
OMG!預期效果達到了。
老規矩,如果你有疑問,歡迎留言。你若問,我必答。
總結
以上是生活随笔為你收集整理的php添加linux定时任务,PHP与Linux定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php类可以遍历,在PHP中检测一个类是
- 下一篇: python程序狮,编程狮app下载