在开发过程中经常会碰到需要每天或每周固定时间启动需要处理大量数据的程序。这时就需要使用到 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.youkuaiyun.com/cuiyuan9/article/details/7641624 下有详细的介绍
pcntl_fork()的用法如下:
如果出现 没有找到 pcntl_fork() 方法的错误提示,则说明你还没有安装php 多进程支持,安装的具体说明在
http://blog.youkuaiyun.com/cuiyuan9/article/details/8423590 下有详细的介绍
<?php
for($i = 0 ; $i<5;$i++){ //启动 5个子进程来处理数据
$pid = pcntl_fork(); // 启动一个字进程,并返回进程号
if($pid == -1){
//进程创建失败
}else if(!pid){
//这里就是 子进程需要执行的地方,最后需要 exit 一下,否则他会继续向下执行
}else{
//这里就是 父进程在创建完子进程后 要执行的部分,可以写一些信号控制等内容
}
}
?>
这样就实现了 在liunx下 每天定时启动一个多进程处理数据的任务了。