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官方手册》
316 0
|
Java API PHP
(转载)为什么不推荐使用swoole和hyperf官方框架
(转载)为什么不推荐使用swoole和hyperf官方框架
4178 0
|
2月前
|
存储 安全 搜索推荐
hyperf-throttle-requests,一个超牛的 PHP 限流神器
`hyperf-throttle-requests` 是专为 Hyperf 框架设计的请求频率限流库,适用于分布式系统和微服务架构,能有效防止恶意攻击和流量高峰对后端服务的影响。通过限制用户在一定时间内的请求次数,确保服务的稳定性和可用性。该库支持注解、助手函数及直接调用三种使用方式,并提供了灵活的配置选项,如存储驱动、最大请求次数等。最新版已兼容 Hyperf 3.1 版本,安装简便,配置灵活,是保护后端服务的理想选择。
36 3
|
6月前
|
网络协议 前端开发 关系型数据库
【workerman】uniapp+thinkPHP5使用GatewayWorker实现实时通讯
上述为之前给公司做内部通讯软件时个人整理内容,水平有限,如有错误之处,望各位园友不吝赐教!如果觉得不错,请点击推荐和关注!谢谢~๑•́₃•̀๑ [鲜花][鲜花][鲜花]
153 0
|
小程序 Shell API
workman(三)thinkphp5.0使用workerman
Thinkphp5.0框架如何使用workerman,这个官方手册中同样给出了示例 请移步《thinkphp5.0官方手册》
376 0
|
前端开发 小程序 JavaScript
swoole(一)laravel8配置使用swoole(3)
Laravel-swoole的优势就是将swoole插件集成至laravel-s插件中,当前laravel-s插件启动的时候,同时持久化的启动了swoole,不需要我们再服务器端再启动一次swoole。
170 0
|
Dart 前端开发 JavaScript
swoole(一)laravel8配置使用swoole(1)
然后在服务器使用命令行执行 复制代码
383 0
|
前端开发 应用服务中间件 网络安全
swoole(一)laravel8配置使用swoole(2)
将上边我使用xxx代替的部分改成你自己的信息。 特别说明一下:我这里使用了ssl证书,如果您没有相关的配置,把https那部分换掉就好。 具体的配置含义,请参考官方文档:
125 0
|
Linux PHP Docker
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
880 0
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
|
PHP
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
446 0