关于workerman与codeigniter结合使用的调用方式

workerman想通过TP、CI之类的PHP框架来启用


提示:PHP CI 框架下集成使用 workerman


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、如何在CI框架中使提供websocket服务?

示例:与ThinkPHP,CI等框架结合
使用GatewayWorker时开发者最关心的是如何与现有mvc框架(ThinkPHP Yii laravel等)
总体原则:
现有mvc框架项目与GatewayWorker独立部署互不干扰

二、使用步骤

1.环境搭建

请参考 http://doc3.workerman.net/315115


2.下载workerman

WorkerMan实际上就是一个PHP代码包,如果你的PHP环境已经装好,只需要把WorkerMan源代码或者demo下载下来即可运行。

Composer安装:

	composer require workerman/workerman

Git安装:

	git clone https://github.com/walkor/Workerman

二、创建操作控制器

1.创建Workerman 控制器

切换到项目目录下 controller 目录

// Workerman  controller
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once '../vender/workerman/workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
use \Workerman\Connection\AsyncTcpConnection;
class Workerman extends CI_Controller
{
     public function __construct()
     {
        parent::__construct();
     }
     public function server(){
          $task_worker = new Worker('Text://0.0.0.0:3061');
          // task进程数可以根据需要多开一些
          $task_worker->count = 20;
          $task_worker->name = '任务名称';
          //只有php7才支持task->reusePort,可以让每个task进程均衡的接收任务
          //$task->reusePort = true;
          $task_worker->onMessage = function($connection, $task_data)
          {
               // 假设发来的是json数据
               $task_data = json_decode($task_data, true);
               echo "\r\n";

      		  //业务了逻辑。。。。。。。。。可调用CI 程序
            
               // 发送结果
               // $connection->send(json_encode($task_result));
          };
          Worker::runAll();
     	}
     }
?>

2.启动 Workerman 方法

启动
以debug(调试)方式启动

php start.php start

以daemon(守护进程)方式启动

php start.php start -d

停止
php start.php stop

重启
php start.php restart

平滑重启
php start.php reload

查看状态
php start.php status

但是引用了框架需要修改默认的路由,将第一路由作为控制器和方法调用
修改文件 Workerman/Workerman/worker.php

runAll 方法

    public static function runAll()
    {
        static::checkSapiEnv();
        static::init();
        static::lock();
        static::parseCommand();
        static::daemonize();
        static::initWorkers();
        static::installSignal();
        static::saveMasterPid();
        static::unlock();
        static::displayUI();
        static::forkWorkers();
        static::resetStd();
        static::monitorWorkers();
    }
	
	//修改删除默认获取的第一路由
	//在头部增加
        global $argv;
        unset($argv[1]);
        $argv = array_values($argv);
	

2.启动 Workerman

切换到项目根目录
运行
在这里插入图片描述

启动成功
守护进程方式启动
在这里插入图片描述

总结

本文介绍了在第三方框架下如何集成使用workerman的启动方式,应该怎么加参数才可以实现类似直接启动workerman的效果,如何带入框架路由启动服务,并可以通过workerman 方式调用框架进行业务处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值