利用liunx的 crontab 和 php 的 pcntl_fork() 實現定時啓動的多線程php程序

在開發過程中經常會碰到需要每天或每週固定時間啓動需要處理大量數據的程序。這時就需要使用到 php多進程來處理,可以實現短時間內處理大量數據。

先介紹 liunx 下的 crontab的用法 :

如果執行文件中有導入相對路徑的文件需要先cd 到文件當前目錄

 0 7 * * * cd /usr/local/nginx/html/task && /usr/local/php/bin/php /usr/local/nginx/html/task/Task.php >> /home/admin/task_cron.txt

意思是每天的7點開始執行 Task.php 文件

crontab -l 查看當前定時
crontab -e 編輯
pgrep crond //狀態

執行一下命令是 必須是root 在 root 目錄下  root用戶執行 su - root 可以 直接進入root目錄

service crond status //狀態
service crond stop //關閉服務
service crond restart //重啓服務
service crond reload //重新載入配置

關於crontab 的詳細介紹 在 http://blog.csdn.net/cuiyuan9/article/details/7641624 下有詳細的介紹


pcntl_fork()的用法如下:

如果出現 沒有找到 pcntl_fork() 方法的錯誤提示,則說明你還沒有安裝php 多進程支持,安裝的具體說明在

http://blog.csdn.net/cuiyuan9/article/details/8423590  下有詳細的介紹

<?php

for($i = 0 ; $i<5;$i++){ //啓動 5個子進程來處理數據

     $pid = pcntl_fork();   // 啓動一個字進程,並返回進程號

     if($pid == -1){

          //進程創建失敗

     }else if(!pid){

          //這裏就是 子進程需要執行的地方,最後需要 exit 一下,否則他會繼續向下執行

    }else{

          //這裏就是 父進程在創建完子進程後 要執行的部分,可以寫一些信號控制等內容

    }

}

?>

這樣就實現了 在liunx下 每天定時啓動一個多進程處理數據的任務了。

發佈了29 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章