用法:

$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()方法第一个参数为执行文件的路径,必须为绝对路径
第二个参数为数组,为执行文件的数组

Swoole 进程管理的更多相关文章

  1. Swoole 进程管理模块 Process 之单进程的使用

    PHP 自带的 pcntl,存在很多不足,如: 没有提供进程间通信的功能: 不支持重定向标准输入和输出: 只提供了 fork 这样原始的接口,容易使用错误: Swoole\Process 提供了如下特 ...

  2. Swoole 源码分析——进程管理 Swoole_Process

    前言 swoole-1.7.2 增加了一个进程管理模块,用来替代 PHP 的 pcntl 扩展. PHP自带的pcntl,存在很多不足,如 pcntl 没有提供进程间通信的功能 pcntl 不支持重定 ...

  3. swoole(2)swoole进程结构

    一:进程基本概念 系统中正在运行的一个程序,程序一旦运行就是进程 一个进程可以拥有多个线程 核心内容分为两部分:内存(进程创建时从系统分配的,它所创建的变量都会存储在这一块内存中).上下文环境 二:s ...

  4. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  5. 进程管理三大扩展工具htop

    三大进程管理监控工具 HTOP 介绍: Htop是一款运行于Linux系统监控与进程管理软件,htop提供所有进程的列表,并且使用彩色标识出处理器.swap和内存状态.用户一般可以在top无法提供详尽 ...

  6. Linux进程管理子系统分析【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...

  7. Linux下取代top的进程管理工具 htop

    一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for ...

  8. Linux进程管理

    一.进程管理简介 进程是正在执行的程序或命令,每一个进程都是一个运行实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用: 1.判断服务器的健康状态 2.查看系统中的所有进程 3.杀死进程 ...

  9. C++ Windows进程管理

    功能: 1.各个进程启动.挂起.恢复.停止等 2.监听进程的运行状态,进程退出(正常.非正常)时,通知用户 3.异步队列 4.线程安全 进程管理器类: #ifndef __ProcessManager ...

随机推荐

  1. [蓝桥杯]ALGO-122.算法训练_未名湖边的烦恼

    问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个.现在 ...

  2. 【Docker】docker常用指令

    开启docker,并设置开机自启动 老式写法: service docker start chkconfig docker on 新式写法: systemctl start docker.servic ...

  3. 使用mongo shell转换字符类型

    MongoDB数据类型如下: 类型 对应数字 别名 说明 Double1 1 double   String 2 string   Object 3 object   Array 4 array   ...

  4. appium 点击物理按键

    有时候我们遇到一些需要点击手机物理返回按键,或者home键等操作,总结如下: adb shell input keyevent 点击home键: adb shell input keyevent 3 ...

  5. Java学习——使用Static修饰符

    程序功能:通过两个类 StaticDemo.LX4_1 说明静态变量/方法与实例变量/方法的区别. package Pack1; public class Try { public static vo ...

  6. 让SH/BAT脚本定位到运行目录的相对位置,实现其脚本可在任意运行目录下被正确执行

    让SH/BAT脚本定位到运行目录的相对位置 实现其脚本可在任意运行目录下被正确执行 在Linux下的bash脚本 #!/bin/bash cd `` 在Windows下的BAT脚本 echo off ...

  7. python实现简单的登陆认证(含简单的文件操作)

    需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(本 ...

  8. SCCM 2012 R2实战系列之一:SQL安装

    大家好,从今天开始跟大家一起分享自己学习SCCM 2012 R2的一些心得和具体的部署配置,希望能帮到大家.由于SCCM部署的步骤比较复杂,内容也比较多,所以我把SCCM整个部署过程分为以下三个章节: ...

  9. python容器数据类型的特色

    python容器数据类型的特色 list:           可变数据类型(不可哈希), 有序, 可索引获取, 可修改 Dict:         可变数据类型(不可哈希), 3.6版本有序, 可通 ...

  10. mobilehack -转

    # mobileHack##工具类网站 [HTML5 与 CSS3 技术应用评估](http://html5please.com/ "html5与css3技术应用评估") [各种奇 ...