<?php
/**
 * Created by PhpStorm.
 * User: whitneywang
 * Date: 2018/6/4
 * Time: 14:14
 */
//第二个参数为true时,不输出TODO里的输出内容,显示会放到管道中
$process = new swoole_process(function (swoole_process $pro) {
    //todo
    //开启HTTPserver 类似在linux里运行一个PHP文件
    //exec第二个参数要为数组
    //Swoole\Process::exec() expects parameter 2 to be array
    $pro->exec('/home/work/bin/php',[ __DIR__.'/../server/http.php']);
}, false);
$pid = $process->start();
print_r($pid);
//回收子进程
swoole_process::wait();

第二个参数为true只输出进程PID:

第二个参数为false

输出子进程

ps aux | grep process/process.php  可以看主进程 15594 就是上面15595的父进程

pstree -p 15594 通过子进程ID,可看到树结构

ps aft | grep http

场景:

curl

<?php

class Curl
{
    const URLS = [
        'http://baidu.com',
        'http://qq.com',
        'http://sina.com.cn'
    ];

    function __construct()
    {
        echo 'process start time ' . time("Ymd H:i:s").PHP_EOL;
    }

    /**
     * 闭包里不好直接用变量,要用use
     * @return bool
     */
    public function execute()
    {
        $workers = [];
        foreach (self::URLS as $key => $val) {
            $process = new swoole_process(function (swoole_process $pro) use ($key, $val) {
                //curl
                $content = $this-> curlData($val);
                echo $content . PHP_EOL;
                $pro->write($content. PHP_EOL); //$pro->write也可以直接输出管道里的内容
            }, true); //true的情况下,输出信息会在管道里
            $pid = $process->start();
            $workers[$pid] = $process;
        }
        // 获取管道里的内容
        foreach ($workers as $pros) {
            print_r($pros->read());
        }
        echo 'process end time ' . time("Ymd H:i:s");
    }

    /**
     * 模拟CURL请求
     * @param $url
     * @return string
     */
    function curlData($url)
    {
        //正常这里写CURL 或者file_get_content sleep
        sleep(1);
        return $url . ' succ'.PHP_EOL;
    }

}

$ws = new Curl();
$result = $ws->execute(1, 'test');
print_r($result . PHP_EOL);
echo 'start:' . PHP_EOL;

swoole process进程 多分发相关推荐

  1. php swoole process,Swoole_process实现进程池的方法

    Swoole的进程之间有两种通信方式,一种是消息队列(queue),另一种是管道(pipe),对swoole_process 的研究在swoole中显得尤为重要. IO多路复用 swoole 中的io ...

  2. PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题?

    PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题? 最近公司有个项目,要举办一个线上活动,我这边负责提供接口记录用户访问记录,与操作记录,由于活动参与人数可能比较多,为了不影 ...

  3. 获取文件的后缀名 和 Process进程

    1.获取文件的后缀名: string hou = Path.GetExtension("wang.txt");//hou=".txt";引用using Syst ...

  4. 为何System Idle Process 进程占用了大量有CPU资源

    有稍微有点计算机基础的朋友问我,我的电脑速度变得很慢,有个System Idle Process 经常会占据我大量的CPU资源,是不是有病毒在作祟啊? 其实如果说电脑速度运行过一段时间变慢,是有可能是 ...

  5. php swoole process,PHP swoole的process模块创建和使用子进程操作示例

    本文实例讲述了PHP swoole的process模块创建和使用子进程操作.分享给大家供大家参考,具体如下: swoole中为我们提供了一个进程管理模块 Process,替换PHP的 pcntl 扩展 ...

  6. Swoole Process

    swoole_process 什么是swoole_process呢? swoole_process是基于C语言封装的进程管理模块,方便PHP多进程编程. swoole_process内置管道.消息队列 ...

  7. oracle server process,KI视角下的ORACLE SERVER PROCESS进程的活动

    1.Server Process oracle的服务进程也称为shadow进程,主要是用于响应客户端请求执行相关的SQL语句,该进程运行的效率会对oracle的客户端的操作人员的体验产生很大的影响,o ...

  8. Electron中通过process进程对象的api获取CPU、系统位数、环境变量等相关信息

    场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...

  9. PHP安装TP6的composer install报Undefined index: process 进程依赖于proc_open 这个函数不可用

    报错:安装tp6时候的报错 方法一 翻译:进程依赖于proc_open 这个函数,在我安装的PHP中这个函数不可用. 禁用函数去掉这个即可,在php.ini文件里面  使用/proc_open  找到 ...

最新文章

  1. 微信小程序 自定义单选复选按钮组的实现(用于实现购物车产品列表功能)
  2. CentOS7配置iptables防火墙
  3. python对逻辑回归进行显著性_python sklearn库实现简单逻辑回归的实例代码
  4. python sort 多级排序_sort、sorted排序技巧(多级排序)
  5. BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头 筛法
  6. C语言异常处理之 setjmp()和longjmp()
  7. 刷屏了!这篇Python学习贴,90%的程序员都用的上!
  8. 贵州全国计算机二级报名官网入口,2019年3月贵州全国计算机二级考试报名入口已开通...
  9. java简历项目经验大全,不吃透都对不起自己
  10. zz 教你如何用proxyhunter找大学代理
  11. 四4层电梯三菱PLC程序带io表接线图
  12. php readystate,ajax+php打造进度条 readyState各状态的简单示例
  13. 前置:API:DSP:核心交换机:边界网关协议:边界:(防御)防火墙:负载均衡:摆渡机:名词解释
  14. 基于图搜索的规划算法之Voronoi图法
  15. 从豆瓣看《长安十二时辰》如何成为爆款IP?
  16. ubuntu下没有中文输入法的解决办法!
  17. Hackergame 2020
  18. python公司分析_Python分析6000家破产IT公司
  19. nginx 学习 --->>> nginx 实现动静分离
  20. 安装haxm时遇到的三种报错及解决措施

热门文章

  1. Java IO: 网络
  2. 扫盲文章:AMF,RTMP,RTMPT,RTMPS
  3. pyhon取文件md5值
  4. C语言 数字翻转输出
  5. 一、查看MVC4还是MVC5
  6. python中修改工作目录
  7. rabbitMQ简单使用
  8. poj-2406(kmp水题)
  9. Oracle Drop表并未直接删除 drop table xx purge
  10. oracle随机取数据