内容简介:PHP提供了一个Pcntl扩展,Pcntl基于Linux的进程,Windows系统暂时没有这个扩展,用于实现基础的多进程实现,可以利用这个处理一个很耗时的任务,例如发订阅邮件,短信,站内信等。参考链接:
PHP提供了一个Pcntl扩展,Pcntl基于 Linux 的进程,Windows系统暂时没有这个扩展,用于实现基础的多进程实现,可以利用这个处理一个很耗时的任务,例如发订阅邮件,短信,站内信等。
参考链接:
http://php.net/manual/zh/ref....
http://php.net/manual/zh/ref....
http://blog.csdn.net/huyanpin...
http://rango.swoole.com/archi...
https://www.lvtao.net/dev/php...
示例代码:
代码是基于 Laravel 框架的,建议使用此框架来允许这部分代码。
public function index(Request $request) { pcntl_signal(SIGCHLD, SIG_IGN); //如果父进程不关心子进程什么时候结束,子进程结束后,内核会回收。 $max = 8000; $workers = 10; $pids = array(); for($i = 0; $i < $workers; $i++){ $pids[$i] = pcntl_fork(); $pid = posix_getpid(); switch ($pids[$i]) { case -1: echo "fork error : {$i} \r\n"; exit; case 0: $param = array( 'lastid' => $max / $workers * $i, 'maxid' => $max / $workers * ($i+1), ); $this->doSomething($pid, $param); exit; default: break; } } foreach ($pids as $i => $pid) { if($pid) { //父进程会得到子进程号,所以这里是父进程执行的逻辑 //如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait($status)语句,或写成: pcntl_wait($status,WNOHANG); //等待子进程中断,防止子进程成为僵尸进程。 //pcntl_waitpid($pid, $status); } } } // 可以看到那个子进程在处理哪些数据 public function doSomething($filename, $param) { for ($i = $param['lastid']; $i < $param['maxid']; $i++) { $path = "./test/"; if (!is_dir($path)){ mkdir($path, 0777, true); } $content = $i . '|'; $file = $path . $filename . ".txt"; file_put_contents($file, $content, FILE_APPEND); } }
更多建议读文档,进程和线程,还有很多内容的,需要读书去学习了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Linux 端 Firefox 63 扩展程序将默认独立进程
- 进程:进程生命周期
- Python 知识巩固:通过主进程带起多个子进程实现多进程执行逻辑
- Python 中子进程与父进程
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- Python第十二章-多进程和多线程01-多进程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
遗传算法与工程优化
程润伟 / 清华大学出版社 / 2004-1 / 39.00元
《遗传算法与工程优化》总结了遗传算法在工业工程相关领域应用的前沿进展。全书共分9章:遗传算法基础、组合优化问题、多目标优化问题、模糊优化问题、可靠性设计问题、调度问题、高级运输问题、网络设计与路径问题和制造元设计问题。内容既涵盖了遗传算法在传统优化问题中的新进展,又涉及了目前在供应链和物流研究中相当热门的话题。一起来看看 《遗传算法与工程优化》 这本书的介绍吧!