至于php_pcntl扩展如何安装开启这里就不介绍了,只分析pcntl_fork()这个函数本身。
$one = 123;$one++;$two = time();$pid = [];$pid = pcntl_fork();$three = time();
当:pcntl_fork()函数执行的时候,会创建一个子进程。子进程会复制当前进程,也就是父进程的所有:数据,代码,还有状态。
1.当pcntl_fork()创建子进程成功后,在父进程内,返回子进程号,在子进程内返回0,失败则返回-1
2.子进程会复制父进程的代码,数据。那么就说明:子,父进程拥有的代码和数据会一模一样。
3.重点:子进程会复制父进程的状态,那么就有上面的示例代码:在第五行执行了pcntl_fork,那么创建出的子进程,代码也是从第五行开始执行的。又子进程复制了数据,代码。所以,在子进程内同理存在:$one,$two等变量
for ($i = 0; $i <p>那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)<br> 原因:父进程在<span class="katex--inline"><span class="katex"><span class="katex-mathml"> i = 0 时 , 创 建 出 一 个 子 进 程 0 , 此 时 的 子 进 程 , 还 会 继 续 执 行 循 环 。 创 建 出 属 于 自 己 的 子 进 程 。 同 理 : i=0时,创建出一个子进程0,此时的子进程,还会继续执行循环。创建出属于自己的子进程。同理: </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.65952em; vertical-align: 0em;"></span><span class="mord mathdefault">i</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 0.64444em; vertical-align: 0em;"></span><span class="mord">0</span><span class="mord cjk_fallback">时</span><span class="mord cjk_fallback">,</span><span class="mord cjk_fallback">创</span><span class="mord cjk_fallback">建</span><span class="mord cjk_fallback">出</span><span class="mord cjk_fallback">一</span><span class="mord cjk_fallback">个</span><span class="mord cjk_fallback">子</span><span class="mord cjk_fallback">进</span><span class="mord cjk_fallback">程</span><span class="mord">0</span><span class="mord cjk_fallback">,</span><span class="mord cjk_fallback">此</span><span class="mord cjk_fallback">时</span><span class="mord cjk_fallback">的</span><span class="mord cjk_fallback">子</span><span class="mord cjk_fallback">进</span><span class="mord cjk_fallback">程</span><span class="mord cjk_fallback">,</span><span class="mord cjk_fallback">还</span><span class="mord cjk_fallback">会</span><span class="mord cjk_fallback">继</span><span class="mord cjk_fallback">续</span><span class="mord cjk_fallback">执</span><span class="mord cjk_fallback">行</span><span class="mord cjk_fallback">循</span><span class="mord cjk_fallback">环</span><span class="mord cjk_fallback">。</span><span class="mord cjk_fallback">创</span><span class="mord cjk_fallback">建</span><span class="mord cjk_fallback">出</span><span class="mord cjk_fallback">属</span><span class="mord cjk_fallback">于</span><span class="mord cjk_fallback">自</span><span class="mord cjk_fallback">己</span><span class="mord cjk_fallback">的</span><span class="mord cjk_fallback">子</span><span class="mord cjk_fallback">进</span><span class="mord cjk_fallback">程</span><span class="mord cjk_fallback">。</span><span class="mord cjk_fallback">同</span><span class="mord cjk_fallback">理</span><span class="mord cjk_fallback">:</span></span></span></span></span>i=1时也会这样……</p><p>推荐学习:《<a href="https://www.php.cn/course/list/29/type/2.html" target="_self">PHP视频教程</a>》</p>
以上就是你了解php中pcntl_fork吗的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号