thinkphp5整合workerman,tp5整合workerman

简介: thinkphp5整合workerman,tp5整合workerman

由于workerman底层直接读取$_SERVER['argv']的命令行参数,没有提供独立的方法start/stop,而tp的命令行参数无法适配workerman,虽然thinkphp官方专门做了一个适配的版本,但是看了下评论问题挺多的。于是自己来搞一个.

(1).在application/command.php中添加如下代码:

return [

   'app\socket\command\Socket'

];

(2).创建 application/socket/command目录,在这个目录创建Socket.php文件

<?php

namespace app\socket\command;


use think\console\Command;

use think\console\Input;

use think\console\input\Argument;

use think\console\input\Option;

use think\console\Output;

use Workerman\Worker;


class Socket extends Command

{

   /**

    * 命令Input配置

    */

   protected function configure()

   {

       $this->setName('socket')

           ->addArgument('action', Argument::OPTIONAL, "action")

           ->addOption('other', '-d', Option::VALUE_OPTIONAL, 'test');

   }


   /**

    * 重置Cli参数

    */

   protected function resetCli()

   {

       global $argv, $argc;


       $file = "{$argv['0']} {$argv['1']}";

       $action = $argv['2'];

       $extend = empty($argv['3']) ? '' : $argv['3'];

       $argv = [];

       $argv[] = $file;

       $argv[] = $action;

       if ($extend)

       {

           $argv[] = $extend;

       }

       $argc = count($argv);


       $_SERVER['argv'] = $argv;

       $_SERVER['argc'] = $argc;

   }


   /**

    * 命令响应

    * @param Input $input

    * @param Output $output

    * @return int|void|null

    */

   protected function execute(Input $input, Output $output)

   {

       //01.重置Cli命令行参数

       $this->resetCli();


       //02.开始WorkMan代码

       $ws_worker = new Worker(config('socket.socket_name'));


       // 启动4个进程对外提供服务

       $ws_worker->count = 2;


       // 接收到浏览器发送的数据时回复hello world给浏览器

       $ws_worker->onMessage = function ($connection, $data) {


           // 向浏览器发送hello world

           $connection->send('hello ' . $data);


       };


       // 运行worker

       Worker::runAll();

   }

}

(3).在tp根目录执行命令

php think socket start

名字不想叫socket,可以修改$this->setName('socket')

目录
相关文章
|
小程序 Shell Linux
workman(二)thinkphp5.0安装websocket插件workerman
首先说明一下我使用的PHP框架是thinkphp5.0。 当然,workerman这个插件不是只有thinkphp5.0可以使用。 具体的安装方法,thinkphp5.0的官方手册中是给出了明确的说明 请移步《thinkphp5.0官方手册》
466 0
|
负载均衡 小程序 应用服务中间件
workman(四)配置nginx支持webscoket
Webscoket的集成库workerman,在域名配置的问题上,官方文档是有给出示例的:请移步《官方文档》 第一次用,可能看不太懂,我这里大概解释一下。
288 0
|
PHP 开发工具
ThinkPHP6.0 发送阿里云短信
一、登录阿里云,注册短信服务 1.阿里云短信服务:dysms.console.aliyun.com/overview
2662 0
|
存储 弹性计算 关系型数据库
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
在我们选择阿里云服务器系统盘和数据盘时,如果是选择ESSD云盘,还需要选择云盘的云盘性能级别PL,PL性能级别有PL3、PL2、PL1、PL0四个性能级别的云盘规格,如果是通过阿里云的活动来购买云服务器的话,由于系统盘默认一般为20G或40G容量,可选的PL性能级别通常只有PL0(单盘IOPS性能上限1万)和PL1(单盘IOPS性能上限5万)可选择,有的用户肯能并不清楚ESSD云盘的性能等级之间有何区别,单盘IOPS性能指的是什么,本文为大家介绍一下ESSD云盘的云盘性能级别PL3、PL2、PL1、PL0相关知识点。
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
|
小程序 Shell API
workman(三)thinkphp5.0使用workerman
Thinkphp5.0框架如何使用workerman,这个官方手册中同样给出了示例 请移步《thinkphp5.0官方手册》
586 0
|
3月前
|
存储 人工智能 数据可视化
2025年技术团队必看:10款提升研发效率的知识管理工具深度评测
在数字化时代,知识管理已成为提升个人与企业竞争力的关键。2025年,随着AI、大数据和云计算的发展,知识管理工具正向智能化、协作化方向演进。本文精选10款必备工具,涵盖Notion、Obsidian、语雀、飞书文档等,助你构建高效知识体系,把握未来趋势。
308 0
|
传感器 网络协议 物联网
手把手教你在 Windows 环境中搭建 MQTT 服务器
手把手教你在 Windows 环境中搭建 MQTT 服务器
1350 0
|
自然语言处理 IDE 开发工具
通义灵码编程智能体上线,支持Qwen3模型
通义灵码最全使用指南,一键收藏。
128673 31
通义灵码编程智能体上线,支持Qwen3模型
|
12月前
|
缓存 JavaScript
vue2知识点:全局事件总线(GlobalEventBus)
vue2知识点:全局事件总线(GlobalEventBus)
299 2
vue2知识点:全局事件总线(GlobalEventBus)
|
12月前
|
存储 Linux 开发者
熟悉 Docker 命令行工具
【10月更文挑战第6天】
256 3