對於php本身並沒有一套解決方案來執行定時任務,不過是借助sleep函式完成的。這種方就是要提前做一些配置,如實現過程:
ignore_user_abort();//關掉瀏覽器,php指令碼也可以繼續執行.set_time_limit(0);// 通過set_time_limit(0)可以讓程式無限制的執行下去
$interval=60*30;// 每隔半小時執行
dowhile(true);
不過關於這種方式我有一些擔心效能方面的問題,不過也是個臨時的方法。
本人推薦的方式採用指令碼來實現,利用os本身的定時任務機制,windows上場利用bat指令碼。不過本人沒有在window上嘗試過。那我就講講在linux中的實現。
如果你的web server是基於linux的,那麼可以採用linux下的cron job 來完成。以redhat5 為例,我們只需要預先要定時執行的邏輯**。例如demo.php
<?phpecho "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的特殊的配置請參考:
這裡我就按照每天的上午12點到下午的14點鐘之間每2分鐘執行一次這個指令碼,那麼配置如下(例如demo.sh是位於/tmp 目錄下):
首先在linux的命令列中執行crontab -e ,然後把規則輸入到裡面:
*/2 12-14 * * * /tmp/demo.sh
帶輸入完成之後按鍵盤上的「esc」鍵,然後輸入:wq,編輯頁面就退出了。然後你可以用crontab -l 來檢視你剛編輯的cron job.
修改你的cron job. 例如 :vi /var/spool/cron/demo
利用os的方式來管理你的定時任務是很快捷的,而且不用你擔心效能的問題,除非你的指令碼本身存在一些問題。這樣的方式易於維護,可以修改定時執行的計畫,也可以輕鬆的移除和新增其它的定時任務。
php 定時執行任務
之於是否控制,可以做到的,應借用第三個條件 config.php return 1 cron.php ignore user abort 關掉瀏覽器,php指令碼也可以繼續執行.set time limit 0 通過set time limit 0 可以讓程式無限制的執行下去 interval 60...
PHP定時執行任務
php定時執行任務有兩種方式 一 linux 伺服器 linux原生支援crontab,所以可以利用這一功能做定時任務 步驟 1 編輯crontab檔案 linux crontab e 0 9 usr bin curl esc wq 儲存 二 windows伺服器 windows伺服器可以利用系統的...
定時執行任務
在windows上,使用configuration task scheduler 任務計畫程式 task scheduler library 任務計畫程式庫 create task.或者 control panel scheduled tasks add a scheduled task.在linu...