在開發過程中經常會碰到需要每天或每週固定時間啓動需要處理大量數據的程序。這時就需要使用到 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下 每天定時啓動一個多進程處理數據的任務了。