ThinkPHP6 Workerman 基本使用

摘要:
Workerman Workerman是一个纯PHP开发的开源高性能PHP套接字服务器框架。它支持TCP长连接、Websocket、HTTP等协议以及用户定义的协议。基于worker-man,开发人员可以更加专注于业务逻辑开发,而不必担心PHPSocket的底层开发。首先,安装composerrequire以通过composer思考/思考工作者。使用Workerman作为HttpServer在命令行启动服务器phpthinkworker。然后您可以通过浏览器直接访问当前应用程序http://localhost:2346Linux可以支持以下命令phpthinkworker[start|stop|reload|restart|status]workerman的参数可以在应用程序配置目录下的worker.php中配置。例如,我们可以创建一个服务类,然后设置属性并添加回调方法˂?

Workerman

 

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。

安装

首先通过 composer 安装

composer require topthink/think-worker

  

使用

使用Workerman作为HttpServer

在命令行启动服务端

php think worker

  

然后就可以通过浏览器直接访问当前应用

http://localhost:2346

  

linux下面可以支持下面指令

php think worker [start|stop|reload|restart|status] 

  

workerman的参数可以在应用配置目录下的worker.php里面配置。

由于onWorkerStart运行的时候没有HTTP_HOST,因此最好在应用配置文件中设置app_host

SocketServer

在命令行启动服务端(需要2.0.5+版本)

php think worker:server

  

默认会在0.0.0.0:2345开启一个websocket服务。

如果需要自定义参数,可以在config/worker_server.php中进行配置,包括:

ThinkPHP6 Workerman 基本使用第1张

并且支持workerman所有的参数(包括全局静态参数)。

也支持使用闭包方式定义相关事件回调。

return [
 'socket' =>  'http://127.0.0.1:8000',
 'name' =>  'thinkphp',
 'count' =>  4,
 'onMessage' =>  function($connection, $data) {
 $connection->send(json_encode($data));
 },
];

  

也支持使用自定义类作为Worker服务入口文件类。例如,我们可以创建一个服务类(必须要继承 thinkworkerServer),然后设置属性和添加回调方法

<?php
namespace apphttp;
use thinkworkerServer;
class Worker extends Server
{
 protected $socket = 'http://0.0.0.0:2346';
 public function onMessage($connection,$data)
 {
 $connection->send(json_encode($data));
 }
} 

  

支持workerman所有的回调方法定义(回调方法必须是public类型)

然后在worker_server.php中增加配置参数:

return [
 'worker_class' =>  'apphttpWorker',
];

  

定义该参数后,其它配置参数均不再有效。

在命令行启动服务端

php think worker:server

  

然后在浏览器里面访问

http://localhost:2346

  

如果在Linux下面,同样支持reload|restart|stop|status 操作

php think worker:server reload 

  

更多学习内容请访问:

腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)图标

免责声明:文章转载自《ThinkPHP6 Workerman 基本使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Phoenix 使用教程Ubuntu Server 与 Ubuntu Desktop区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

win10 优化批处理

@ECHOoffECHO关闭自动修复bcdedit/setrecoveryenabledNOecho完成ECHO关闭WindowsDefenderregadd“HKEY_LOCAL_MACHINESOFTWARE策略MicrosoftWindowsDefender”/v“DisableAntiSpyware”/d1/tReG_ DWORD/fcho完成ECH...

Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

您可以看到ELDict类中有一个引用:importjavax。xml。绑定注释XmlAttribute;虽然未使用,但它会导致mvn编译错误。在在线绑定中搜索“包javax.xml.bind.nannotation不存在”。结果是:包javax。xml。bind Annotation不存在-CSDN论坛2009年12月2日·无法编译使用jaxb的类,因为软件...

java报表实现excel一样冻结表头的功能

增加了几个新的指标,后台sql改了,拿过来只须在一个dao类中修改就足够了,可恨的是客户又提出来改报表表样,加个类似excel冻结表头的功能。...

Delete from join 用法

delete(别名)fromtblA(别名)leftjointblb(别名)on。。。...

C# AES的128位、192位、256位加密

这里将不解释C#AES的128位、192位和256位加密原理。这里我们主要讨论AES的CBC加密模式中128位、192位和256位加密之间的差异,并参考对称加密和块加密的四种模式。16位密钥对应128位加密,24位密钥对应192位加密,32位密钥对应256位加密,矢量必须为16位。“);ifthrownewException(”指定的密钥长度不能小于16位。...

硬中断与软中断的区别!

在多核系统上,一个中断通常只能中断一个CPU(也有一种特殊情况,即主机上有一个硬件通道。它可以在没有主CPU支持的情况下同时处理多个中断。软中断:1。软中断与硬中断非常相似。生成软中断的进程必须是当前正在运行的进程,因此它们不会中断CPU。...