程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> linux實現php定時執行cron任務詳解

linux實現php定時執行cron任務詳解

編輯:關於PHP編程

     linux實現php定時執行cron任務

    對於PHP本身並沒有一套解決方案來執行定時任務,不過是借助sleep函數完成的。這種方就是要提前做一些配置,如實現過程:    代碼如下: ignore_user_abort();//關掉浏覽器,PHP腳本也可以繼續執行.     set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執行下去     $interval=60*30;// 每隔半小時運行     do{         //這裡是你要執行的代碼            sleep($interval);// 等待5分鐘     }while(true);     不過關於這種方式我有一些擔心性能方面的問題,不過也是個臨時的方法。   本人推薦的方式采用腳本來實現,利用OS本身的定時任務機制,windows上場利用bat腳本。不過本人沒有在window上嘗試過。那我就講講在linux中的實現。   如果你的web server是基於linux的,那麼可以采用linux下的cron job 來完成。以RedHat5 為例,我們只需要預先要定時執行的邏輯代碼。例如demo.php   代碼如下: <?php echo "Hello"; ?>     然後是吧php用shell腳本一封裝,在shell腳本中調用demo.php,demo.sh代碼如下:    代碼如下: #!/bin/bash #if you php install to /usr/local/php/ /usr/local/php/bin/php /home/xx-user/demo.php     完成shell腳本的編寫之後,確保它有足夠的這行權限,例如:/bin/chmod u+x demo.sh.   然後配置linux上的cronjob,cronjob是linux上默認安裝的。如果你的任務是需要按小時、天、周、月來執行的話,那麼你直接可以將你的demo.sh腳本拷貝到   /etc/cron.hourly 、/etc/cron.daily 、/etc/cron.weekly、/etc/cron.monthly 就ok了,這樣就可以完成你的任務了 。如果到某個時間點想移除定時任務,那就從上面這些folder中move到其它地方或者直接刪除掉就ok了。   如果你的腳本有特殊的執行時間,例如每個星期的周二,或者是每個月的15號執行。那麼你就需要配置屬於你自己的cron job.   關於cron的特殊的配置請參考:http://www.pantz.org/software/cron/croninfo.html   這裡我就按照每天的上午12點到下午的14點鐘之間每2分鐘運行一次這個腳本,那麼配置如下(例如demo.sh是位於/tmp 目錄下):   首先在linux的命令行中執行crontab -e ,然後把規則輸入到裡面:   代碼如下: */2 12-14 * * *  /tmp/demo.sh     帶輸入完成之後按鍵盤上的“Esc”鍵,然後輸入:wq,編輯頁面就退出了。然後你可以用crontab -l 來查看你剛編輯的cron job.   到此時特殊的cron 也就完成了。例如你剛才是用linux下的demo賬戶來完成上面的步驟,那麼還有一個簡單的方法就是直接可以編輯/var/spool/cron/demo 這個文件,可以直接   修改你的cron job.  例如 :vi /var/spool/cron/demo   利用OS的方式來管理你的定時任務是很快捷的,而且不用你擔心性能的問題,除非你的腳本本身存在一些問題。這樣的方式易於維護,可以修改定時執行的計劃,也可以輕松的移除和新增其它的定時任務。  
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved