当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

swoole-co-pool

Swoole 协程工作池
授权协议 MIT
开发语言 PHP
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 爱繁
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

介绍

Swoole 协程工作池,它可以限定你的同时工作协程数量,并且减少协程频繁创建销毁的损耗。

原理

事先定好协程数量和工作队列长度,将所有工作协程事先创建好。

使用 Swoole\Coroutine\Channel 实现工作队列。

在每个工作协程中,Swoole\Coroutine\Channel->pop()。一旦有新的任务 push 进队列,就会有一个工作协程被唤醒。

安装

在您的composer.json中加入配置:

{
    "require": {
        "yurunsoft/swoole-co-pool": "~1.0"
    }
}

然后执行composer update命令。

使用

use Yurun\Swoole\CoPool\CoPool;
use Yurun\Swoole\CoPool\Interfaces\ICoTask;
use Yurun\Swoole\CoPool\Interfaces\ITaskParam;

$coCount = 10; // 同时工作协程数
$queueLength = 1024; // 队列长度
$pool = new CoPool($coCount, $queueLength,
    // 定义任务匿名类,当然你也可以定义成普通类,传入完整类名
    new class implements ICoTask
    {
        /**
         * 执行任务
         *
         * @param ITaskParam $param
         * @return mixed
         */
        public function run(ITaskParam $param)
        {
            // 执行任务
            return true; // 返回任务执行结果,非必须
        }

    }
);

$data = 1; // 可以传递任何参数

// 增加任务,并挂起协程等待返回任务执行结果
$result = $pool->addTask($data);

// 增加任务,异步回调
$result = $pool->addTask($data, function(ITaskParam $param, $data){
    // 异步回调
});

代码示例

详见 test/test.php

  • 基于thinkphp5.1进行整合swoole。此篇文章涉及的知识点有点多。值得注意的是:这篇文章不是单单整合swoole服务端,还包括模型整合,redis协程开发等。 基础搭建 基于thinkphp5.1开启socket服务,我这里使用了自定义服务类 在config文件夹配置里面加入PHP配置代码 <?php // +---------------------------------------

  • swoole错误“Uncaught Error: Class 'swoole_server' not found”的解决办法 在phpinfo中有在php -m中没有 先确认CLI模式下是否有 命令行输入php --ri swoole 如果输出了swoole的扩展信息就说明你安装成功了! 99.999%的人在此步成功就可以直接使用swoole了 不需要管php -m或者phpinfo网页打印出来是

  • 连接池使用说明 所有连接池的实现均基于 ConnectionPool 原始连接池; 连接池的底层原理是基于 Channel 的自动调度; 开发者需要自己保证归还的连接是可重用的; 若连接不可重用,需要调用 $pool->put(null); 归还一个空连接; 归还空连接后,原始连接池会重新创建连接以保证连接池的数量一致。 PDO 连接池 declare(strict_types=1); use S

  • swoole的mysql连接池怎么弄 发布时间:2020-12-28 09:54:07 来源:亿速云 阅读:68 作者:小新 这篇文章给大家分享的是有关swoole的mysql连接池怎么弄的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 传统的nginx+FPM模式的PHP程序而言,每次请求FPM的worker都会连接一次mysql,然后请求结束便会断开连接。对于并发小的

  • 关于热重载时 注册子进程时 启动报错 PHP Fatal error: Uncaught ArgumentCountError: Swoole\Process::__construct() expects at most 3 parameters, 4 given in /data/www/es/vendor/easyswoole/component/src/Process/AbstractPro

  • 一、安装thinkphp swoole扩展 composer require topthink/think-swoole 二、设置swoole配置文件 <?php use think\swoole\websocket\socketio\Handler; use think\swoole\websocket\socketio\Parser; return [ 'server'

 相关资料
  • <?php use Yurun\Util\YurunHttp; use Yurun\Util\HttpRequest; // 设置默认请求处理器为 Swoole YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); // Swoole 处理器必须在协程中调用 go('test'); functio

  • swoole 的用法实际上对于大多数新手来说一直并不怎么友好,其实这不怪 swoole,只能怪萌新们确实底子不够,有些东西理解起来可能真的比较困难。今天斗胆尝试引入一个应用场景和简单的代码案例来做个简单的入门,算是抛砖头引和田玉吧。 老韩 wiki.swoole.com 以及一些社区中一直说 swoole 既可以同步又可以异步,我找一些原话,你们感受一下: Swoole 不仅支持异步,还支持同步。

  • imi 中对进程池的创建和运行做了简单封装,基于Swoole\Process\Pool实现。 定义进程池 <?php namespace XinchengApi\api\ProcessPool; use Imi\Process\Annotation\ProcessPool; /** * @ProcessPool(name="进程名称") */ class Sms extends \Imi\

  • CO

    Basic CO 是一个优雅、高效的 C++ 基础库,支持 Linux, Windows 与 Mac 平台。CO 追求极简、高效,不依赖于 boost 等三方库。 CO 包含协程库(golang-style)、网络库(tcp/http/rpc)、日志库、命令行与配置文件解析库、单元测试框架、json 库等基本组件。 参考文档 中文 English 亮点功能 co co 是一个 golang 风格的

  • 项目落户GitHub后,一定希望有越来越多的人能参与其中。GitHub提供了包括传统的问题追踪系统、维基,还包括了分布式版本控制系统特有的协同工具。 4.1. Fork + Pull模式 4.2. 共享版本库 4.3. 组织和团队 4.4. 代码评注 4.5. 缺陷跟踪 4.6. 维基

  • 协作流程 Web 系统 Web 系统部署在服务器上为提出不同需求的外部客户端服务。 MVC (Model, View, Controller) 它们分别代表数据层,视图层, 和控制层。 数据层,封装数据管理操作(例如数据的 CRUD ) 视图层,展示数据模型提供人机交互 控制层,处理用户请求,委托数据层,选择视图层进行展示 NOTE:CRUD 代表 Create、Read、Update、Delet