THINKPHP5.1在windows系统下,安装workerman

2023-11-05

一、首先你要在项目里安装composer(按照步骤下载):

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

php composer-setup.php

php -r "unlink('composer-setup.php');"

上述 3 条命令的作用依次是:

下载安装脚本 - composer-setup.php - 到当前目录。
执行安装过程。
删除安装脚本。

下载成功后,查看版本号,就可查看有无成功下载:

composer -v

具体查看composer中国全量镜像:https://pkg.phpcomposer.com/#how-to-install-composer

二、下载workerman
a、先检查你现在的PHP版本号(PHP>=5.3.3)
b、cmd下输入命令,composer安装

composer require workerman/workerman

三、安装好workerman后,创建start.php(可以放在项目的任意目录,只需要引入workerman的Autoloader.php),代码如下:

<?php
use Workerman\Worker;

//Autoloader.php路径
require_once "./Autoloader.php";//按照你的真实路径

$global_uid = 0;
// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
function handle_connection($connection)
{
    global $text_worker, $global_uid;

    // 为这个连接分配一个uid
    $connection->uid = ++$global_uid;
}

// 当客户端发送消息过来时,转发给所有人
function handle_message($connection, $data)
{
    global $text_worker;
    foreach ($text_worker->connections as $conn) {
        $conn->send("user[{$connection->uid}] said: $data");
    }
}

// 当客户端断开时,广播给所有客户端
function handle_close($connection)
{
    global $text_worker;

    foreach ($text_worker->connections as $conn) {
        $conn->send("user[{$connection->uid}] logout");
    }
}


// 创建一个文本协议的Worker监听2000接口  用0.0.0.0方便链接内网外网
$text_worker = new Worker("websocket://0.0.0.0:2000");


// 只启动1个进程,这样方便客户端之间传输数据
$text_worker->count = 1;
$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';

Worker::runAll();

四、创建好start.php后,在start.php的文件的位置,打开cmd输入命令:

php start.php start

截图实例:
在这里插入图片描述

五、在web前端,使用websocket连接(演示):

<input type="text" id="chat">
<div class="sub" style="width:50px;height:50px;border:1px solid #000;cursor:pointer;">提交</div>

<script src="引用jq"></script>
<script>
    $(function(){
        var ws = new WebSocket("ws://127.0.0.1:2000");
        ws.onmessage = function(e) {
            alert(e.data);
        };

        $('.sub').click(function(){
            var chat = $('#chat').val();
            var ws = new WebSocket("ws://127.0.0.1:2000");
            ws.onopen = function() {
                ws.send(chat);
            };
            // ws.onmessage = function(e) {
            //     alert(e.data);
            // };
        })
    })
</script>

如果看到服务器反馈信息,则证明成功了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

THINKPHP5.1在windows系统下,安装workerman 的相关文章

  • 如何在 PHP 中知道种子/对等点的数量

    当您放置一个 torrent文件在您的网站上下载 您如何获取该 Torrent 的种子和同级数量并通知用户 您必须联系 torrent 文件中显示的跟踪器 如果跟踪器支持 抓取 这可能就是您想要的请求 否则 由跟踪器决定要返回多少个对等点给
  • wordpressfunctions.php - 为每个帖子类别使用不同的页面模板

    我想连接到 save post 函数 找出帖子所属的类别 然后为每个类别中的帖子分配不同的页面模板 我已经尝试了大约 30 个不同的版本 但都没有成功 有人可以帮我指出正确的方向吗 add action save post assign c
  • 404 路由无法匹配请求的 URL

    我刚刚开始学习zend 框架 questions tagged zend framework并遵循此用户指南 http framework zend com manual 2 3 en index html 我能够成功安装zend skel
  • 在 Python 中窗口“失焦”时读取 HID 输入

    我在一个问题上苦苦挣扎了好几天 但无法让它发挥作用 我刚刚开始使用 python 现在已经面临着我在这个项目中将面临的最大问题 情况是这样的 我必须编写一个扫描条形码的程序 将其传达给在线服务并打印 PDF 这一切都很好 但我也想在窗口 失
  • 使用 Sendemail 的 HTML 表单

    我不知道问题出在哪里 mail 工作正常 我已经用一个简单的 php 文件对其进行了测试 但我的表单不发送任何电子邮件 HTML section div class wow fadeIn div div class parallax div
  • 在 Laravel 中获取身份验证用户 ID

    如果用户登录 Laravel 5 1 我们可以访问用户 ID Auth user gt id 在我以前的应用程序 不是 laravel 中 当用户登录时 我正在为 userid 注册一个会话 我正在检查 SESSION user id 是否
  • 正则表达式匹配IP地址[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是正则表达式的新手 我想使用preg match函数用于查找字符串是否为 IP 地址 例如 string 10 0 0 1 preg m
  • 如何?使用 PHP API 提交亚马逊创建配送订单 XML

    我现在正在努力使用 Amazon API 我正在尝试创建履行订单 将订单发送到亚马逊以供他们履行 我首先需要创建我使用过的文档 的XMLhttp www jyi org wp content uploads Amazon xml pdf h
  • 在“打开方式...”上下文菜单中命名程序

    如何自定义程序中可见的名称打开用 Windows XP 和 7 中的上下文菜单 例如 我有 3 个版本的产品 名为XYZ安装在 Windows 上 x文件关联到xyz exe COM 注册 该产品的所有版本都具有相同的 exe姓名 现在在打
  • PHP如何找到Web服务器的临时路径?

    当您处理 HTTP 上传时 文件将上传到 FILES field name tmp name 我知道我可以从那里提取临时路径 但我期待着也许 SERVER具有临时路径 没有 或其他优雅的方式来了解它的参数 有没有 ini get uploa
  • Laravel 4,如何在 Route::controller() 上应用过滤器

    我知道我能做到 Route get foo bar array before gt filter uses gt Controller bar 应用路由一些过滤器 我也知道 Route group 方法 无论如何 如果我想以这种方式定义一个
  • PayPal Express 在沙盒模式下返回 4011 错误消息

    我在 PHP 脚本 curl SOAP 中以沙盒模式使用 PayPal Express 我有一个简单的购买表格 带有 1 个 购买 按钮 当它被点击时 我发送初始 SetExpressCheckout 请求并从 paypal 获得成功响应
  • 让 PHPUnit 忽略一些事情?

    我有一个 PHPUnit 测试类 我希望在测试运行中忽略它 我知道我可以通过重命名它来做到这一点 以便它的文件名中不包含 测试 一词 但我不想这样做 因为它比我想要的更混乱了源代码控制水域 有人有建议吗 有几个选项phpunit命令可以帮助
  • 以编程方式将 Magento 订单标记为完整

    当我从第三方服务收到特定响应时 我尝试将 处理 订单标记为 完成 我已经为此做好了一切设置 但唯一的问题是订单仍处于处理状态 我正在生成发票 不过我认为我不需要这个 因为每个项目在 Magento 后端都被标记为 已开票 和发货 如下所示
  • 获取 Woocommerce 单一产品页面中的产品类别名称和描述

    我一直在使用 WooCommerce Codex 但我似乎无法显示数据 我只想显示产品类别和描述 以在我自己的自定义布局的单个产品页面上显示 如下所示 由于一个产品可以有多个产品类别 因此您需要使用 foreach 循环 这 term变量是
  • 如何限制注册用户尝试投票两次[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 php 编码和网站设计非常陌生 我正在尝试开发一个在线投票系统 只允许注册用户投票 已完成所有操作并且工作正常 但我需要的帮助是
  • SQL Server Express(或任何版本)可以在 RPi 上运行吗?

    我注意到完整版的 Windows 10 可以在 RPI 3 上运行 我想知道 SQL Server Express 或任何其他版本 是否可用于 ARM 版本的 Windows 我在任何地方都看不到它 所以我怀疑答案是否定的 但想检查一下我是
  • Laravel 自定义授权

    我在这里进行登录验证 LoginData Input except array token if Auth attempt LoginData return success 我的表不同 所以这里我更改表名称auth php table gt
  • python 格式日期时间,带有“st”、“nd”、“rd”、“th”(英文序数后缀),如 PHP 的“S”

    我想要一个 python datetime 对象来输出 并在 django 中使用结果 如下所示 Thu the 2nd at 4 30 但我在python中找不到输出的方法st nd rd or th就像我可以使用 PHP 日期时间格式一
  • npm run dev 和 npm run production 之间的区别

    我对 Laravel 和 vue js 很陌生 请让我知道它们之间有什么区别npm run dev and npm run production 这和环境有关系吗 npm run dev创建源映射并且不会缩小 js css 这使得调试和查找

随机推荐

  • 虚拟机中,安装tensorflow时killed解决办法

    我在图形界面的虚拟Linux里的pycharm里 用pip命令安装clu时 要先安装tensorflow 第一次tensorflow下载成功了 存在了cache文件夹里 但其他包发生了冲突 连接失败 当解决完冲突 在此用pip安装时 到了收
  • 【webpack】配置React环境

    配置React打包环境 开始搭建 安装webpack 基础配置 开发环境 使用Typescript 使用React 代码规范 Prettier Eslint 总结 一个现代化的web应用 已经不是单纯地优html css javascrip
  • 查看linux 所有运行的应用和端口命令

    要查看 Linux 中所有运行的应用程序及其对应的端口 可以使用以下命令 1 使用 netstat 命令 已被弃用 建议使用 ss 命令 netstat tuln 这会显示当前系统上所有打开的网络连接和监听的端口 其中 t 表示显示 TCP
  • 自动标注软件AnyLabeling安装及使用教程

    自动标注软件AnyLabeling AnyLabeling自动标注软件介绍 AnyLabeling标注软件安装 anylabeling标注软件使用 AnyLabeling自动标注软件介绍 该工具作为一个具有Segment Anything和
  • JavaScript高级

    文章目录 今日内容 一 DOM简单学习 为了满足案例要求 1 功能 二 事件简单学习 三 BOM 1 概念 Browser Object Model 浏览器对象模型 2 组成 3 Window 窗口对象 案例2 轮播图 4 Location
  • c# - A study on the NativeWindow - encapsulate window handle and procedure

    NativeWindow gives you a way to way to intercept the window messages are you familiar with the Windows Message Pump Aslo
  • 【yolov7系列三】实战从0构建训练自己的数据集

    大家好 我是张大刀 上文中提到了yolov7的正负样本匹配策略 这里主要从0开始训练自己的数据集 如果大家需文中ppt使用 请关注公众号后台添加微信 领取 备注 ppt 首先大刀是在windows电脑端完成数据集的标注 linux ubun
  • 在 FPGA 上如何实现双线性插值的计算?

    作者 殷庆瑜 责编 胡巍巍 目录 一 概述 二 What 什么是双线性插值 二 Why 为什么需要双线性插值 三 How 怎么实现双线性插值 关键点1 像素点选择 关键点2 权重计算 升级1 通过查表减少计算量 升级2 通过数据锁存减少取数
  • cnpm下载、cnpm不存在处理、yarn安装

    1 cnpm全局安装 npm install g cnpm registry https registry npm taobao org 2 运行cnpm v 报错 不是内部环境 3 解决办法 在环境变量里添加路径 cmd中输入以下命令获取
  • 万用表怎么测量电池容量_家电维修必知:万用表测量及使用方法

    万用表怎么用 这是很多新手或是业余爱好者的一个小难题 有了万用表却不会使用 万用表是电工电器行业不可缺少的测量仪表 一般以测量电压 电流和电阻为主要目的 万用表按显示方式分为指针万用表和数字万用表 是一种多功能 多量程的测量仪表 也称三用表
  • c语言打开大于2G的文件,C语言操作大于2G的文件

    最近在做视频编解码时遇到使用fseek无法定位到一个大于2G的文件尾 由于自己功底不扎实 百思不得其解 请教大神后得知在VC平台下使用 fseeki64可以解决问题 然而自己傻乎乎的在获取文件指针位置的地方依旧使用的ftell 中途调试N久
  • (Java)leetcode-42 Trapping Rain Water(接雨水)

    题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图 计算按此排列的柱子 下雨之后能接多少雨水 上面是由数组 0 1 0 2 1 0 1 3 2 1 2 1 表示的高度图 在这种情况下 可以接 6 个单位的雨水 蓝色部分表示雨水
  • Servlet重要的API

    重要的API 重要的API config response响应 响应头的相关操作 响应输出流的操作 其它操作 request请求 请求头数据 Request乱码问题的解决方法 Java反射基础 重要的API config init 和ini
  • 【软件测试简答题】

    软件测试简答题 1 根据G Mayers的观点 软件测试的目的是什么 软件测试是 1 为了发现错误而执行程序的过程 2 一个好的用例能够发现至今尚未发现的错误的测试 3 一个成功的测试是发现至今尚未发现的错误的测试 2 简述软件测试的任务
  • java试题 算法训练 大小写转换

    试题 算法训练 大小写转换 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 输入一个字符串 将大写字符变成小写 小写变成大写 然后输出 输入格式 acbAB 输出格式 ACBab 样例输入 一个满足题目要求的输入范例 例
  • 浅析Python爬虫ip程序延迟和吞吐量影响因素

    作为一名资深的爬虫程序员 今天我们很有必要来聊聊Python爬虫ip程序的延迟和吞吐量 这是影响我们爬取效率的重要因素 这里我们会提供一些实用的解决方案 让你的爬虫程序飞起来 网络延迟 首先 让我们来看看网络延迟对爬虫ip程序性能的影响 网
  • 【2022】小米秋招前端笔试(卷1+卷2单选题)

    文章目录 小米秋招前端笔试卷1 1 Git 暂存操作的API是什么 2 的valueOf和toString的结果是什么 3 排序算法中哪一种算法的时间复杂度是O nlogn 4 通常情况下 一个URL的格式是 5 以下哪个项目不是可以在HT
  • 【Educoder作业】问题求解——for 循环

    E d u c o d e r Educoder Educoder作
  • VUE全局过滤器

    对于反复使用或多个组件使用的过滤器相同时应该考虑全局过滤器 1 最基本的使用方法 在main js中注册 Vue filter MyFilter function value 返回处理后的值 return value 在组件直接使用即可 2
  • THINKPHP5.1在windows系统下,安装workerman

    一 首先你要在项目里安装composer 按照步骤下载 php r copy https install phpcomposer com installer composer setup php php composer setup php