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

2022-10-06 12:42:15 字數 1726 閱讀 9886

對於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

複製** **如下:

<?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的特殊的配置請參考:

這裡我就按照每天的上午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的方式來管理你的定時任務是很快捷的,而且不用你擔心效能的問題,除非你的指令碼本身存在一些問題。這樣的方式易於維護,可以修改定時執行的計畫,也可以輕鬆的移除和新增其它的定時任務。

本文標題: linux實現php定時執行cron任務詳解

本文位址: /wangluo/php/103125.html

linux定時執行php指令碼

由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service crond stop 關閉服務 sbin service crond restart 重啟服務 sbin service c...

linux下定時執行php指令碼

1.在需要定時執行的php檔案的第一行加 plain view plain copy bin local php q 其中 bin local php 是自己的php.exe 所在的位置 2.上傳要定時執行的php檔案到乙個位置,可以通過 path to your php script.php 訪問...

php 定時執行任務

之於是否控制,可以做到的,應借用第三個條件 config.php return 1 cron.php ignore user abort 關掉瀏覽器,php指令碼也可以繼續執行.set time limit 0 通過set time limit 0 可以讓程式無限制的執行下去 interval 60...