thinkphp5.0.*和workerman的使用

这里写自定义目录标题windows版安装workerman在windows注册服务

windows版

在安装之前先确定下workerman的使用场景,是用在windows平台还是Linux平台,再跟进文档进行配置
因为跟进thinkphp5.0文档进行配置的时候不是很全,自己还摸索了下,记录下这个过程

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

安装workerman

跟进tp官方文档:

    首先通过 composer 安装;这里需要根据tp版本号和workerman版本号来安装,官方文档有点不清楚;我的是fastadmin,用的是tp5.0.24版本,只能安装1.0版本扩展
composer require topthink/think-worker=1.0.*

    需要在window下做服务端,还需要安装,我安装的时候是 3.5.1 ;貌似从3.5.3开始是不分Linux和windows了;但是如果要用tp官方扩展的话需要tp6.0才支持
composer require workerman/workerman-for-win

    新增启动服务文件server.php,在项目根目录;
<?php
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','push/Worker');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

    在push/controller模块新增服务处理类,products.cn是我本地测试域名,最后面有个index方法主要就是官方文档的命令无法执行,需要加start,为了方便我自己增加的
<?php
namespace app\push\controller;
use think\worker\Server;
class Worker extends Server
{
protected $socket = 'websocket://products.cn:2346';
/**
* 收到信息
* @param $connection
* @param $data
*/
public function onMessage($connection, $data)
{
$data = json_decode($data,true);
if ($data['sign']){
$connection->send($data['sign']);
}else{
$connection->send("我收到链接信息了");
}
}
/**
* 当连接建立时触发的回调函数
* @param $connection
*/
public function onConnect($connection)
{
}
/**
* 当连接断开时触发的回调函数
* @param $connection
*/
public function onClose($connection)
{
}
/**
* 当客户端的连接上发生错误时触发
* @param $connection
* @param $code
* @param $msg
*/
public function onError($connection, $code, $msg)
{
echo "error $code $msg\n";
}
/**
* 每个进程启动
* @param $worker
*/
public function onWorkerStart($worker)
{
}
public function index(){
parent::start();
}
}

    在项目根目录下打开命令行下运行,启动监听服务;
php server.php
上面这个命令是我有增加index方法去调用父类的start方法
如果按官方的例子则需要用如下命令
php server.php start

    运行成功会出现如下状态;

thinkphp5.0.*和workerman的使用

    在html文件中增加如下js代码;
<script type="application/javascript">
ws = new WebSocket("ws://products.cn:2346");
ws.onopen = function() {
alert("连接成功");
ws.send('tom');
alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};
$(".signScore").click(function () {
var sign = '{"sign":"签到"}';
ws.send(sign);
})
</script>

    当我点击按钮发送一个签到json串过去的时候,我服务接收并返回了我发送的消息,因为我处理了再返回的。
    thinkphp5.0.*和workerman的使用

到此tp5.0和workman的对接就完成了简单的通讯,至于需要开发聊天或者其他的取代浏览器轮询操作的需要再封装完善下代码;

在windows注册服务

因为在Windows端如果长期运行的话不太可能单独开一个cmd,这样每次都要用cmd启动,比较麻烦,我们可以使用Windows的服务来完成

    在D盘新建一个server.txt,然后后缀名改成.bat,接着用notepad++编辑批处理脚本
@echo off
d:
cd D:\code\products
php server.php

    一定要用管理员 权限启动cmd 输入一下内容创建服务;
sc create workerman2346 binPath=D:/server.bat description="PHPsocket服务" start=auto

    我自己开始不太清楚命令,是分两步走的:
    thinkphp5.0.*和workerman的使用
    thinkphp5.0.*和workerman的使用

    然后查看windows服务列表:
    thinkphp5.0.*和workerman的使用
    OK,终于记录下了这次的测试,虽然可能很简单,但是自己还是弄了一个下午,也希望能帮助一些人使用。

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

thinkphp5.0.*和workerman的使用

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » thinkphp5.0.*和workerman的使用
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏