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 方式调用框架进行业务处理。