首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CentOS 使用 Crontab 實現 PHP 腳本定時任務完整教程

     編輯:PHP 相關知識

CentOS 使用 Crontab 實現 PHP 腳本定時任務完整教程

在 Linux 伺服器環境下,利用 Crontab 排程執行 PHP 腳本是處理定時任務(如資料備份、報表生成、快取清理)的標準做法。本文以「每 5 分鐘向資料表插入 2 筆資料」為例,完整示範從建表、撰寫腳本到配置 Crontab 的全流程。

一、準備工作:建立測試資料表

先在 MySQL 中建立一張簡單的 person 表:

CREATE TABLE `person` (
  `FirstName` varchar(100) NOT NULL,
  `LastName` varchar(100) DEFAULT NULL,
  `Age` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`FirstName`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

二、撰寫 PHP 執行腳本 (test.php)

腳本負責連線資料庫並執行插入操作。安全建議: 腳本檔案勿放置於網站公開目錄(如 wwwroot),防止被 URL 直接存取觸發。可放在非公開路徑(如 /home/scripts/),或使用框架(ThinkPHP、CodeIgniter 等)的命令列模式調用。

注意: 範例使用已棄用的 mysql_* 函式,實際生產環境請改用 mysqli 或 PDO,並將資料庫憑證存放於環境變數或獨立配置檔中。

三、配置 Crontab 定時任務

  1. 終端機執行 crontab -e 編輯當前使用者的排程表。
  2. 加入以下行(每 5 分鐘執行一次):
*/5 * * * * /usr/local/php/bin/php /home/wwwroot/default/test.php

欄位說明:

欄位值含義
分*/5每 5 分鐘
時*每小時
日*每天
月*每月
週*每週
命令/usr/local/php/bin/php /home/wwwroot/default/test.phpPHP 執行檔路徑 + 腳本絕對路徑

更多 Crontab 語法請參考:Crontab 命令詳解

四、查看執行日誌

Crontab 執行輸出預設會寄送郵件給該使用者,也可查看系統日誌:

/var/log/cron   # CentOS/RHEL 系統
/var/log/syslog # Debian/Ubuntu 系統

若腳本有 echo 輸出,可重導向至自訂日誌檔便於除錯:

*/5 * * * * /usr/local/php/bin/php /home/wwwroot/default/test.php >> /var/log/test_cron.log 2>&1

五、常見坑點與最佳實踐

  • 環境變數: Crontab 執行環境極簡,腳本內請使用絕對路徑(含 PHP 執行檔、腳本、include 檔、資料庫 socket)。
  • 權限: 確保執行 Crontab 的使用者對腳本與資料庫有讀寫權限。
  • 並發控制: 長時間運行的任務建議加入鎖機制(如 flock),防止重疊執行。
  • 錯誤通知: 將標準錯誤輸出導向日誌,並配合監控系統(如 Zabbix、Prometheus)設定告警。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved