ini_set('memory_limit', '-1');
$files = Finance::getFiles($dir);
if($files){
foreach ($files as $k =>$file){
$nPID = pcntl_fork(); // 创建子进程
if($nPID == 0){
try{
//业务处理
}catch (\Exception $e){
echo "子进程错误"."\n";
$masterpid = posix_getpid();
exec("kill -9 ".$masterpid."");
exit();
}
exit(0); // 执行完后退出
}
}
}
/* 确保这个函数只能运行在SHELL中 */
if (substr(php_sapi_name(), 0, 3) !== 'cli') {
die("cli mode only");
}
//cli_set_process_title("我是父进程,我的进程id是{$ppid}.");
//简单的子进程
$ppid = posix_getpid();
echo "我也不知道现在是什么进程,现在进程id是{$ppid}\n";
$pid = pcntl_fork();
echo "fork了一个进程,返回值是{$pid}\n";
if ($pid == -1) {
throw new Exception('fork子进程失败!');
} elseif ($pid > 0) {
echo "我是父进程,我的进程id是{$ppid}\n";
sleep(5); // 保持30秒,确保能被ps查到
} else {
$cpid = posix_getpid();
echo "我是{$ppid}的子进程,我的进程id是{$cpid}\n";
sleep(5);
}
//执行结果
/*我也不知道现在是什么进程,现在进程id是2330
fork了一个进程,返回值是2331
我是父进程,我的进程id是2330
fork了一个进程,返回值是0
我是2330的子进程,我的进程id是2331*/
//三个子进程任务处理
shell_exec('split -1 2500,-d file.lo prefix_name');
for ($i=1;$i<=3;$i++)
{
$pid = pcntl_fork();
if($pid == -1){
die("could not work");
}elseif($pid){
echo "I am 父进程 $i \n";
}else{
$cpid = posix_getpid();
echo "我是子进程$i===子进程id是===$cpid \n";
exit;
}
}
//等待子进程结束
while (pcntl_waitpid(0,$status) != -1){
$status = pcntl_wexitstatus($status);
echo "Child $status completed\n";
}
//执行结果
/*split: extra operand ‘prefix_name’
Try 'split --help' for more information.
I am 父进程 1
我是子进程1===子进程id是===2416
I am 父进程 2
我是子进程2===子进程id是===2417
I am 父进程 3
我是子进程3===子进程id是===2418
Child 0 completed
Child 0 completed
Child 0 completed*/
php多进程
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...