PHP教程:PHP多进程编程实例详解
|
《PHP教程:PHP多进程编程实例详解》要点: PHP实例本文实例讲述了PHP多进程编程.分享给大家供大家参考,具体如下: PHP实例第一步: PHP实例$ php -m 命令查看php是否安装pcntl 和 posix扩展,若没有则安装 PHP实例使用场景: PHP实例1. 要进行大量的网络耗时的操作 PHP实例多进程常用函数: PHP实例pcntl_alarm ― 为进程设置一个alarm闹钟信号 PHP实例实例一: PHP实例
<?php
//最早的进程,也是父进程
$parentPid = getmypid();
echo '原始父进程:' . $parentPid . PHP_EOL;
//创建子进程,返回子进程id
$pid = pcntl_fork();
if( $pid == -1 ){
exit("fork error");
}
//pcntl_fork 后,父进程返回子进程id,子进程返回0
echo 'ID : ' . $pid . PHP_EOL;
if( $pid == 0 ){
//子进程执行pcntl_fork的时候,pid总是0,并且不会再fork出新的进程
$mypid = getmypid(); // 用getmypid()函数获取当前进程的PID
echo 'I am child process. My PID is ' . $mypid . ' and my fathers PID is ' . $parentPid . PHP_EOL;
} else {
//父进程fork之后,返回的就是子进程的pid号,pid不为0
echo 'Oh my god! I am a father now! My childs PID is ' . $pid . ' and mine is ' . $parentPid . PHP_EOL;
}
$aa = shell_exec("ps -af | grep index.php");
echo $aa;
PHP实例实例二:开多个子进程,避免fork泛滥 PHP实例
<?php
//最早的进程,也是父进程
$parentPid = getmypid();
echo '原始父进程:' . $parentPid . PHP_EOL;
//开启十个子进程
for($i = 0; $i < 10; $i++) {
$pid = pcntl_fork();
if($pid == -1) {
echo "Could not fork!n";
exit(1);
}
//子进程
if(!$pid) {
//child process workspace
echo '子进程:' . getmypid() . PHP_EOL;
exit(); //子进程逻辑执行完后,马上退出,以免往下走再fork子进程,不好控制
} else {
echo '父进程:' . getmypid() . PHP_EOL;
}
}
echo getmypid() . PHP_EOL;
$aa = shell_exec("ps -af | grep index.php");
echo $aa;
PHP实例注意: PHP实例通过pcntl_XXX系列函数使用多进程功能.注意:pcntl_XXX只能运行在php CLI(命令行)环境下,在web服务器环境下,会出现无法预期的结果,请慎用! PHP实例更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 PHP实例希望本文所述对大家PHP程序设计有所帮助. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
