ubuntu 系統crontab定時操作PHP

什麼是Cron和Crontab

Unix和Linux系統的各個發行版本基本都支持Cron,Cron /Crontab允許我們在設定的時間自動執行或定時執行某個任務,如應用程序或腳本。更詳細的概念和使用方法介紹請點擊Cron和Crontab是什麼

現在我們要討論的是,許多的php程序員都可以很快完成Web應用的開發,PHP代碼的調試也比PERL或C語言容易很多,不過經常會碰到有php程序員會問:如何在linux系統中使用crontab來運行Php腳本?比如ubuntu crontab 定時執行php代碼。

Ubuntu 如何使用Crontab定時自動執行PHP腳本

現在遠方博客也碰到了需要在指定的時間運行php腳本的情況,比如定時進行網站的數據統計、自動執行數據庫備份任務、定時發送email等等。

如果我們不使用Cron來執行php腳本,或許我們會採用php include的方法。比如在index.php 中添加代碼:<?php include "crontab.php"?>。當訪客通過瀏覽器訪問http://farlee.info/index.php的時候,自動執行了crontab.php。當然這只是一種思路,這種方法並不能指定時間定時運行PHP腳本,同時也給index.php帶來了額外的服務器消耗。而Linux Ubuntu Crontab 可以很好地完成php 定時任務,這也是寫這篇關於cron的文章的目的。

然後首先想到的是和windows 系統下的計劃任務一樣,通過在windows中使用php的命令行模式執行計劃任務實現定時自動執行php腳本,這是一個思路,另外一個思路就是直接在瀏覽器中訪問php腳本的地址,定時自動打開瀏覽器訪問該網址,執行php腳本。因此在Ubuntu服務器系統下,同樣有類似的兩種思路。下面http://farlee.info/逐步介紹使用Ubuntu Crontab定時執行PHP腳本的設置方法。

PHP 安裝模式

首先我們必須先確認自己在LINUX Ubuntu 服務器上php的安裝模式,以CGI 模塊還是Apache模塊方式安裝? 如果不確定php安裝模式,可以使用 phpinfo() 函數查看:將<?php phpinfo(); ?> 寫在php文件中上傳到網站服務器,訪問該頁面,就在頁面頂部我們找到“Server API”,如果類似“Apache 2.0 Handler”,那麼就是apache模塊;否則php是CGI 模式(shell 命令行模式)。這兩種不同的php安裝模式,正對應於前面介紹的ubuntu crontab 定時執行php的兩種解決方法。

CGI 編譯

如果Server API是cgi,那麼在需要cron執行的php腳本的第一行額外加入一段代碼#!/usr/bin/php -q(類似PERL語法),指定服務器中php可執行程序的位置,具體步驟如下:

1. 確認Ubuntu系統已經安裝了php5-cli模塊,安裝命令:apt-get install php5-cli。在目錄 /usr/bin/php下生成 php可執行程序。

2.  編輯待定時執行的php腳本文件crontab.php,如:

#!/usr/bin/php -q
<?php
$file = "/var/www/".date('H').'_'.date('i').'_'.date('s').'.txt';
file_put_contents($file,date('Y-m-d'));
?>

3.  編輯 crontab 任務:

打開終端,輸入命令:crontab -e

Select an editor.  To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano        <---- easiest
3. /usr/bin/vim.tiny

選擇一個Ubuntu編輯器後,編輯/tmp/crontab.AuN7IQ/crontab 文件:

# m h  dom mon dow   command

在下面添加定時執行命令:

* * * * * php /path/to/your/cron.php

5個星號分別代表定時指定每分、小時、日、月、周。如每天的下午7點執行crontab.php,命令爲:

* 19 * * * php /var/www/cron/crontab.php

然後按Ctrl+O保存,Ctrl+X退出。

4. 再次執行下面的命令行:

Shell> crontab crontab

確認crontab.php的權限爲可執行("chmod 755 /var/www/cron/crontab.php")。

Apache 模塊

如果php安裝是以 apache 模式運行的,那麼在要在ubuntu服務器定時執行的php腳本開頭就不用加#!/usr/bin/php  -q 這一行。php腳本在ubuntu 通過crontab的定時執行通過Lynx瀏覽器的自動訪問來完成。

1.  Lynx瀏覽器安裝。

Lynx瀏覽器是一款輕便的web瀏覽器,使用於大部分Unix 和Linux系統環境。安裝命令:sudo apt-get install lynx。

2. 編輯cron任務,命令crontab -e

* * * * * lynx -dump http://farlee.info/cron.php

注意這個地址最好用絕對地址,包含“http://”的完整url。

3. 再次執行下面的命令行:

Shell> crontab crontab

因爲我在ubuntu安裝的是lamp server,所以採用第二種Apache 模塊的方法就可以使用crontab定時執行php腳本代碼。

轉載出處:遠方博客

---------------------------------------------------------------------------------------------------------我是一條很土的分割線----------------------------------------------------------------------------------------------

補充:每分鐘執行一次.

0-59  *  *  *  *  the run command
每隔?分鐘執行一次
*/1 *  *  *  *  the run command
另一種方式
 */3 * * * * /usr/bin/php /var/www/message/schedule.php > /dev/null 2>&1 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章