用法:

$process = new swoole_process(function(){
//这里写业务代码
},true)
//开启进程,返回进程pid
$pid = $process->start();

实例化时传入第二个参数为 true 时,则表示输出内容到管道

//模拟用进程管理同时请求多个url
$workers = [];
$urls = [
'http://www.baidi.com',
'http://www.google.com',
'http://www.sina.com.cn',
'http://www.qq.com',
'http://www.cnblog.com'
]; foreach ($urls as $i => $url) {
$process = new swoole_process(function($worker) use($urls,$i){
$content = curlData($urls[$i]);
//向管道中写入数据
$worker->write($content);
//echo $content; //使用echo可以达到一样的效果
},true);
$pid = $process->start();
//将创建好的进程保存在数组中
$workers[$pid] = $process;
} // ---------- 等待所有进程结束后再执行后面代码 --------- foreach ($workers as $process) {
//从管道中读取数据
echo $process->read();
//回收子进程
$process::wait();
} //模拟请求数据过程
function curlData($url){
sleep(1);
return $url ."SUCCESS" . PHP_EOL;
}

上面代码执行总耗时 1s ,由此可见多进程大大提高了效率

此外,在创建的子进程中还可以调用外部程序

$process = new swoole_process('callback_function', true);
$pid = $process->start();
function callback_function(swoole_process $worker)
{
$worker->exec('/usr/local/bin/php',array(__DIR__.'/swoole_server.php'));
}

注意:

exec()方法第一个参数为执行文件的路径,必须为绝对路径
第二个参数为数组,为执行文件的数组

最新文章

  1. Eclipse for Java EE软件操作集锦(二)
  2. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置
  3. 子类重载父类的方法“parent::方法名”转于 恩聪PHP学习教程
  4. Pop - Facebook 开源 iOS & OS X 动画库
  5. AccessHelper
  6. sort+awk+uniq三者结合使用
  7. 一个快速查看API的汇编和机器码的工具.发布源码
  8. Asp.net vNext 学习1
  9. Java中设计模式之单例设计模式-1
  10. mysql 存储过程 实现数据同步
  11. SQL Server数据库读写分离提高并发性
  12. java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
  13. .NET 中的序列化 & 反序列化
  14. 【python】web开发
  15. crawler_exa2
  16. 分布式计算框架Spark
  17. rosetta mpi error: protocols.jobdist.JobDistributors:(0)Master Node -- Waiting for job request:tag=1
  18. 解析Google集群资源管理系统Omega
  19. 环境变量篇getenv putenv setenv
  20. python学习之路-day8

热门文章

  1. 持续集成(Continuous Integration)基本概念与实践
  2. 写在vue总结之前(一)
  3. [转]短短几年,Ceph如何引爆中国的开源热潮?
  4. 在OpenCV中要练习的一些基本操作
  5. 查看设备uuid的命令-blkid
  6. centos7 搭建DHCP服务器
  7. IBM MQ常用命令
  8. C#连接数据库最基本操作之sql语句 DML
  9. CentOS之RPM
  10. 用python进行桌面程序开发