php中pcntl_fork是什么意思,pcntl_fork创建子进程fork如何进行的?

  PHP多进程fork一般应用在PHP_CLI命令行中執行php脚本不要在web访问时使用。

php查看是否安装多进程fork模块:

创建子进程fork的函数fork了解过C语言的同学应该都知道这个。

 pcntl_fork — 在当前进程fork当前位置产生分支(子进程fork)译注:fork是创建了一个子进程fork,父进程fork和子进程fork 都从fork的位置开始向下继续执行不同的是父进程fork执行过程中,得到嘚fork返回值为子进程fork号而子进程fork得到的是0。

一个fork子进程fork的基础示例: 

//父进程fork和子进程fork都会执行下面代码 //错误处理:创建子进程fork失败时返回-1. //父进程fork会得到子进程fork号所以这里是父进程fork执行的逻辑 //子进程fork得到的$pid为0, 所以这里是子进程fork执行的逻辑。

如果一个任务被分解成多个进程fork执荇就会减少整体的耗时。

比如有一个比较大的数据文件要处理这个文件由很多行组成。如果单进程fork执行要处理的任务量很大时要耗時比较久。这时可以考虑多进程fork

多进程fork处理分解任务,每个进程fork处理文件的一部分这样需要均分割一下这个大文件成多个小文件(进程fork数和小文件的个数等同就可以)。

比如该文件file.log有10万行数据现在想分4个进程fork处理。需要分割2.5万行一个文件命令split可以做到。

-l是按照行分割-d是分割后的文件名按照数字,-a是分割后的文件个数位数(默认是2做多就是99个;比如超过100个,-a可以写3)自己尝试分割一下就知道了。

// 3个子进程fork处理任务 // 等待子进程fork执行结束

当成功时返回子进程fork的pid,失败返回-1但前进程fork为子进程fork时,返回0由于函数本身依赖于操作系统的fork来实现,所以此函数只能在linux或者Unix操作系统下使用windows操作系统下的服务器是不成功的。

加载中请稍候......

以上网友发言只代表其个人观点,不代表新浪网的观点或立场

我要回帖

更多关于 进程fork 的文章

 

随机推荐