zoukankan      html  css  js  c++  java
  • Swoole 进程管理模块 Process 之单进程的使用

    PHP 自带的 pcntl,存在很多不足,如:

    • 没有提供进程间通信的功能;
    • 不支持重定向标准输入和输出;
    • 只提供了 fork 这样原始的接口,容易使用错误;

    SwooleProcess 提供了如下特性:

    • 可以方便的实现进程间通讯;
    • 支持重定向标准输入和输出,在子进程内 echo 不会打印屏幕,而是写入管道,读键盘输入可以重定向为管道读取数据;
    • 提供了 SwooleProcess->exec() 接口,创建的进程可以执行其他程序,与原 PHP 父进程之间可以方便的通信;
    • 在协程环境中无法使用 SwooleProcess 模块,可以使用 runtime hook+proc_open 实现,参考协程进程管理;

    使用示例:

    use SwooleProcess;
    
    // 主进程创建 3 个子进程
    for ($n = 1; $n <= 3; $n++) {
        $process = new Process(function () use ($n) {
            echo 'Child #' . getmypid() . " start and sleep {$n}s" . PHP_EOL;
            sleep($n);
            echo 'Child #' . getmypid() . ' exit' . PHP_EOL;
        });
        $process->start();
    }
    
    // 主进程用 wait 回收子进程
    for ($n = 3; $n--;) {
        $status = Process::wait(true);
        echo "Recycled #{$status['pid']}, code={$status['code']}, signal={$status['signal']}" . PHP_EOL;
    }
    
    echo 'Parent #' . getmypid() . ' exit' . PHP_EOL;
    
  • 相关阅读:
    OZ Report 오즈 리포트 개발
    日期 英文 英语 韩文 韩语
    行合并
    R内存扩展 win7内存扩展
    计算日期函数
    C#颜色 Color.FromArgb ColorTranslator 16进制
    Phone
    浏览器 UserAgent
    context.Request.Files post 上传问题件
    The connection to adb is down, and a severe error has occured.
  • 原文地址:https://www.cnblogs.com/danhuang/p/13361499.html
Copyright © 2011-2022 走看看