php swoole多进程/多线程用法示例【基于php7nts版】

 更新时间:2019年08月12日 10:07:17   作者:fangdong88  
这篇文章主要介绍了php swoole多进程/多线程用法,结合实例形式分析了基于php7nts版使用swoole进行多线程创建、调用相关操作技巧,需要的朋友可以参考下

本文实例讲述了php swoole多进程/多线程用法。分享给大家供大家参考,具体如下:

swoole的多线程其实就是多进程,进程创建太多切换的开销很大,如果能用上pthreads建议用pthreads,因为我用的是php7nts版本没办法用pthreads

swoole实例如下:

<?php
/**
 * 创建多进程
 */
$worker_num     = 6;    // 默认进程数
$workers       = [];    // 进程保存
$redirect_stdout  = false;  // 重定向输出 ; 这个参数用途等会我们看效果
for($i = 0; $i < $worker_num; $i++){
  $process = new swoole_process('callback_function', $redirect_stdout);
  // 启用消息队列 int $msgkey = 0, int $mode = 2
  $process->useQueue(0, 2);
  $pid = $process->start();
  // 管道写入内容
  $process->write('index:'.$i);
  $process->push('进程的消息队列内容');
  // 将每一个进程的句柄存起来
  $workers[$pid] = $process;
}
/**
 * 子进程回调
 * @param swoole_process $worker [description]
 * @return [type]         [description]
 */
function callback_function(swoole_process $worker)
{
  $recv = $worker->pop();
  echo "子输出主内容: {$recv}".PHP_EOL;
  //get guandao content
  $recv = $worker->read();
  $result = doTask();
  echo PHP_EOL.$result.'==='.$worker->pid.'==='.$recv;
  $worker->exit(0);
}
/**
 * 监控/回收子进程
 */
while(1){
  $ret = swoole_process::wait();
  if ($ret){// $ret 是个数组 code是进程退出状态码,
    $pid = $ret['pid'];
    echo PHP_EOL."Worker Exit, PID=" . $pid . PHP_EOL;
  }else{
    break;
  }
}
/**
 * doTask
 * @return [type] [description]
 */
function doTask()
{
  sleep(2);
  return true;
}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • 解析Linux下Varnish缓存的配置优化

    解析Linux下Varnish缓存的配置优化

    本篇文章是对Linux下Varnish缓存的配置优化进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Zend Studio去除编辑器的语法警告设置方法

    Zend Studio去除编辑器的语法警告设置方法

    Zend Studio是PHP开发者的首选开发工具,其地位相当于微软开发工具中的Visual Studio。Zend Studio的编辑器可以帮我们指出语法错误和警告,但是太多的警告有时让我们的代码看起来很乱,很不舒服
    2012-10-10
  • PHP中mysqli_get_server_version()的实例用法

    PHP中mysqli_get_server_version()的实例用法

    在本篇文章里小编给大家分享的是关于PHP中mysqli_get_server_version()用法以及相关知识点,需要的朋友们可以参考下。
    2020-02-02
  • PHP优化教程之解决嵌套问题

    PHP优化教程之解决嵌套问题

    这篇文章主要给大家介绍了关于PHP优化教程之解决嵌套问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 解析php时间戳与日期的转换

    解析php时间戳与日期的转换

    本篇文章是对php中时间戳与日期的转换进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • phpmyadmin打开很慢的解决方法

    phpmyadmin打开很慢的解决方法

    这篇文章主要介绍了phpmyadmin打开很慢的解决方法,一般这个问题的原因是phpmyadmin的版本检测造成的,因为phpmyadmin的官网有时会打不开,这时只要取消代码中的版本检测即可解决这个问题,需要的朋友可以参考下
    2014-04-04
  • php在线解压ZIP文件的方法

    php在线解压ZIP文件的方法

    这篇文章主要介绍了php在线解压ZIP文件的方法,包含了较为完整的上传与zip解压功能,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • PHP JSAPI调支付API实现微信支付功能详解

    PHP JSAPI调支付API实现微信支付功能详解

    本人最近做了微信支付开发,是第一次接触,其中走了很多弯路,遇到的问题也很多。为了让和我一样的新人不再遇到类似的问题,我把我的开发步骤和问题写出来以供参考,这篇文章主要介绍了PHP JSAPI调支付API实现微信支付功能
    2022-11-11
  • PHP has encountered an Access Violation at 7C94BD02解决方法

    PHP has encountered an Access Violation at 7C94BD02解决方法

    PHP has encountered an Access Violation at 7C94BD02解决方法
    2009-08-08
  • PHP实现快速向MySQL插入千万条数据

    PHP实现快速向MySQL插入千万条数据

    在开发中,有时需要向数据库中插入大量数据,本文将探讨如何使用PHP来快速向MySQL数据库插入1000万条数据,并分享一些优化方法,以确保性能的最优
    2023-08-08

最新评论