当前位置: 首页 > news >正文

workman使用手册1.0

workman官网地址:高性能PHP应用容器 workerman

1:把workman项目放到linux服务器后,需要启动你的php文件,才可以使用

        定位到项目根目录:例:cd /mnt/workman

        启动代码:php outin.php start -d

        停止代码:php outin.php stop

        以debug(调试)方式启动: php outin.php start

2:workman服务端写法

<?phpuse Workerman\Worker;
use Workerman\Timer;
use Workerman\MySQL\Connection;
use procedure\Attendance;require_once __DIR__ . '/vendor/autoload.php';$worker = new Worker('websocket://0.0.0.0:8088');
Worker::$logFile = '/mnt/workman/log/outin.log';    //日志地址$worker->uidConnetions = [];
$worker->onConnect = function($connection) use ($worker)
{$connection->onWebSocketConnect = function($connection , $httpBuffer) use ($worker){// 可以在这里判断连接来源是否合法,不合法就关掉连接// $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket连接
//        if($_SERVER['HTTP_ORIGIN'] != 'https://www.workerman.net')
//        {
//            $connection->close();
//        }// onWebSocketConnect 里面$_GET $_SERVER是可用的// var_dump($_GET, $_SERVER);//前端传入的参数,可以根据type,company_uuid判断需要显示的链接有哪些$worker->uidConnetions[$connection->id]["connection"] = $connection;$worker->uidConnetions[$connection->id]["type"] = $_GET["type"];$worker->uidConnetions[$connection->id]["company_uuid"] = $_GET["company_uuid"];};
};$worker->onClose = function ($connection) use ($worker)
{if (isset($connection->id)) {unset($worker->uidConnetions[$connection->id]);}
};// 进程启动后定时推送数据给客户端
$worker->onWorkerStart = function($worker){//查表,有需要的,// file_put_contents("/mnt/workman/log/" .date("Ymd"). ".txt", date("Y-m-d H:i:s") . ":jin"  .PHP_EOL, FILE_APPEND);$db = new Connection('mysql地址','3306', 'root', 'password', '表名');    //mysql链接信息$attend = new Attendance();Timer::add(1, function()use($worker, $db, $attend){//10s之内的数据$time = time() - 10;$time = date("Y-m-d H:i:s",$time);//$time = date("Y-m-d 00:00:00",$time);$infos = $db->query("SELECT student_userid,class_name,student_name,sign_time,id,company_uuid,status,photo_url FROM sign WHERE tui = '1' AND is_delete = '0' AND sign_time > '$time' GROUP BY student_userid ORDER BY id desc");//获取信息$attend_data = $attend->getAttendanceData($db);foreach($worker->connections as $connection) {$res = $worker->uidConnetions[$connection->id];file_put_contents("/mnt/workman/log/" .date("Ymd"). ".txt", date("Y-m-d H:i:s") . "type1:".$res["type"]  .PHP_EOL, FILE_APPEND);//outin类型的,使用本回调if ($res["type"] == 'outin') {foreach ($infos as $v) {$company_uuid = $v["company_uuid"];$student_userid = $v["student_userid"];$imgurl = $db->single("SELECT imgurl FROM stu_face WHERE company_uuid = '$company_uuid' AND student_userid = '$student_userid'");if ($v["company_uuid"] == $res["company_uuid"]) {$arr = ["class_name"=>$v["class_name"],"student_name"=>$v["student_name"],"status"=>$v["status"],"photo_url"=>$imgurl,"sign_time"=>$v["sign_time"]];//打印输出查询的数据file_put_contents("/mnt/workman/log/" .date("Ymd"). ".txt", date("Y-m-d H:i:s") . "xinxi:".json_encode($arr, true)  .PHP_EOL, FILE_APPEND);//根据数据为已推送$db->query("UPDATE sign SET tui = '2' WHERE tui = '1' AND company_uuid = '$company_uuid' AND student_userid = '$student_userid'");$connection->send(json_encode($arr));}}}if ($res["type"] == 'banji') {$attend->banji($res, $attend_data["ban_infos"],$db,$connection);}}});
};
Worker::runAll();

2:自动加载问题,参考:自动加载-workerman手册

        注:1:文件名是小写的,在使用命名空间的时候,也是使用小写

2:在需要使用的时候,引入是这样的:

相关文章:

workman使用手册1.0

workman官网地址&#xff1a;高性能PHP应用容器 workerman 1&#xff1a;把workman项目放到linux服务器后&#xff0c;需要启动你的php文件&#xff0c;才可以使用 定位到项目根目录&#xff1a;例&#xff1a;cd /mnt/workman 启动代码&#xff1a;php outin.php start -d 停…...

Cesium深入浅出之自定义材质

引子 做为一名技术宅却没有能拿得出手的技术无疑是最可悲的事情。三年前&#xff0c;当我第一次接触Cesium的时候就被它强大和炫丽所折服&#xff0c;最关键的是它还是开源的。以前我一直是机械地敲着业务代码&#xff0c;好像计算机程序就只能干这点事情一样&#xff0c;而 C…...

Appium移动自动化测试--安装Appium

Appium 自动化测试是很早之前就想学习和研究的技术了&#xff0c;可是一直抽不出一块完整的时间来做这件事儿。现在终于有了。 反观各种互联网的招聘移动测试成了主流&#xff0c;如果再不去学习移动自动化测试技术将会被淘汰。 web自动化测试的路线是这样的&#xff1a;编程语…...

前端学习笔记--ES6

修正 ES6是ECMA为JavaScript制定的第6个标准版本&#xff0c;相关历史可查看此章节《ES6-ECMAScript6简介》。 标准委员会最终决定&#xff0c;标准在每年6月正式发布并作为当年的正式版本&#xff0c;接下来的时间里就在此版本的基础上进行改动&#xff0c;直到下一年6月草案…...

冥想第九百七十八天

1.周四&#xff0c;今天客户又发飙了&#xff0c;这次的锅我有点不好受。因为压力很大&#xff0c;所以日语课就不去上了。自己做了题。 2.今天中午跑了步&#xff0c;心率还是有点高了&#xff0c;估计跟穿得最后得薄款羽绒服有关。经过昨天晚上的休息&#xff0c;感觉身体好多…...

Maven分离资源文件

Spring Boot 项目默认的会将所有资源文件、依赖文件、配置文件等打包成单一的 jar 文件&#xff0c;但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。 这时候可以在 pom.xml 文件中进行配置&#xff0c;从而使资源文件、依赖包和可执行文件分离。 本文主要…...

Linux CentOS 8(MariaDB概述)

Linux CentOS 8&#xff08;MariaDB概述&#xff09; 目录 一、项目描述二、相关知识2.1 数据库的基本介绍2.2 数据库的分类介绍 三、项目分析3.1 安装并启动 MariaDB3.2 登录 MariaDB 数据库3.3 提高 MariaDB 安装安全性 一、项目描述 Jan16 公司为满足部门之间数据共享、减少…...

简述几个我们对Redis 7开源社区所做的贡献

Redis 7 已经于2022年4月28号正式发布&#xff0c;其中包括了将近50个新的命令&#xff0c;增加了许多新的特性&#xff0c;并且在整个Redis 6到Redis 7的开发过程中&#xff0c;我也对Redis 的开源社区贡献了一些微薄的力量。在这篇文章中&#xff0c;我来给大家介绍几个自己亲…...

产品卖点怎么写,如何打造卖点?

...

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…...

C++ this 指针 面试

this 指针 this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。 当对一个对象调用成员函数时&#xff0c;编译程序先将对象的地址赋给 this 指针&#xff0c;然后调用成员函数&#xff0c;每次成员函数存取数据成员时&#xff0c;都隐…...

虚拟机上安装docker,并安装flink镜像

1. 安装docker 官网步骤&#xff1a;https://docs.docker.com/engine/install/centos/ sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.…...

【计算机网络】P1 计算机网络概述

P1 计算机网络概述 概念组成角度1&#xff1a;组成部分角度2&#xff1a;工作方式角度3&#xff1a;功能组成 功能分类按分布范围分按使用者分按交换技术按拓扑结构分按传输技术分 标准化工作及相关组织标准化工作相关组织 概念 三网融合 通过 计算机网络&#xff0c;将 电信网…...

003 OpenCV filter2D

目录 一、环境 二、图像卷积 三、代码演示 3.1、锐化 3.2、sobel边缘&#xff0c;x方向 3.3、sobel边缘&#xff0c;y方向 3.4、高斯模糊 3.5、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、图像卷积 在OpenCV…...

轻松玩转华为MateX5分屏功能,乐趣层出不穷!

✅小窗交互&#xff0c;沉浸体验不打断&#xff1b; ✅分区截屏&#xff0c;花式截图&#xff0c;一招搞定&#xff1b; ✅跨屏拖拽&#xff0c;随心分享易如反掌&#xff1b; ✅悬停视频会议&#xff0c;沟通效率大不同。...

springboot引入redisson分布式锁及原理

1.引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version> </dependency>2.配置类创建bean /*** author qujingye* Classname RedissonConfig* Description TOD…...

Linux驱动开发 问题随笔

1、内核空间与用户空间数据交换方式 分两种情况&#xff1a; 1> 需要交换的数据量较大时&#xff1b; 2> 需要交换的数据量较小时&#xff1b; 第一种情况使用以下的函数&#xff1a; unsigned long copy_to_user(void __user* to, const void* from, unsigned long n)…...

三分/01分数规划

三分 最小球覆盖 2018南京D 三分套三分套三分 constexpr int N105; struct node{int x,y,z; }a[N]; int n; double road(double x1,double y1,double z1,double x2,double y2,double z2){return sqrt((x1-x2)*(x1-x2)(y1-y2)*(y1-y2)(z1-z2)*(z1-z2)); } double check(double…...

大批卖家产品被下架!Temu又有新动作?

大批卖家产品被下架&#xff01;Temu又有新动作&#xff1f; 近日&#xff0c;Temu正式上线韩国站&#xff0c;截止目前已上线27个国家地区。Temu海外市场发展迅猛&#xff0c;外界的声音也褒贬不一。这其中最有发言权的&#xff0c;应该就是Temu平台的卖家了&#xff01; …...

STM32 LL库 TIM3定时器多通道捕获输入采集

为什么不用HAL库&#xff0c;使用HAL库捕获输入一个通道还尚可&#xff0c;多通道捕获由于HAL的回调函数不符合我的要求&#xff0c;干脆直接切换到LL库。网上找了许多&#xff0c;代码处理写的不符合我的要求&#xff0c;这里记录一下我的调试过程。 TIM2输出1路PWM信号&#…...

别再画线框图了!用Axure/墨刀搞定HIS门诊医生站高保真原型的5个实战技巧

医疗HIS系统高保真原型设计&#xff1a;Axure/墨刀5大进阶技巧 在医疗信息化领域&#xff0c;门诊医生站作为HIS系统的核心模块&#xff0c;其原型设计的质量直接影响开发效率和最终用户体验。传统线框图已无法满足现代医疗系统复杂交互的需求&#xff0c;掌握Axure或墨刀的高阶…...

基于卷积神经网络的忍者像素绘卷风格迁移:从原理到实战部署

基于卷积神经网络的忍者像素绘卷风格迁移&#xff1a;从原理到实战部署 1. 引言&#xff1a;当AI遇见像素艺术 想象一下&#xff0c;你手头有一张普通的照片&#xff0c;但希望它能变成复古游戏里的忍者像素风格——就像那些经典的街机游戏画面。这听起来像是需要专业美术师才…...

深入解析DDR3与AXI接口:基于7035开发板的实战笔记

1. DDR3基础概念与7035开发板适配 第一次接触DDR3时&#xff0c;我也被那些专业术语搞得晕头转向。直到在7035开发板上实际调试后&#xff0c;才发现理解DDR3的关键在于抓住几个核心特性。DDR3全称Double Data Rate 3&#xff0c;顾名思义&#xff0c;它在时钟上升沿和下降沿都…...

南京大学发布“视频侦探“系统:让AI像侦探一样从长视频中找线索

这项由南京大学与中科院自动化所联合进行的研究发表于2026年的计算机视觉与模式识别(CVPR)会议&#xff0c;论文编号为arXiv:2603.22285。有兴趣深入了解的读者可以通过该编号查询完整论文内容。当我们观看一部两小时的电影时&#xff0c;想要回答"主角在什么时候第一次露…...

SEO_SEO优化常见误区及正确操作指南

SEO优化常见误区 在互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为网站运营中不可或缺的一部分。很多人在实际操作中却常常犯下一些常见的SEO优化误区&#xff0c;这不仅影响了网站的流量&#xff0c;也可能导致搜索引擎的惩罚。下面我们将详细分析这些…...

使用ZLMRTCClient.j实现webRtc流播放

1. 核心播放器组件封装 (WebRTCPlayer.vue)为了在项目中复用播放逻辑&#xff0c;我们首先封装一个 WebRTCPlayer 组件。该组件主要负责&#xff1a;初始化播放器实例&#xff1a;配置 ZLMRTCClient.Endpoint。处理自动播放&#xff1a;解决浏览器禁止带音频自动播放的问题。生…...

无需本地安装,用快马平台5分钟搭建git操作可视化原型

最近在准备一个Git入门教学项目时&#xff0c;发现很多新手卡在环境配置这一步。传统方式需要先安装Git客户端、配置SSH密钥、设置全局参数&#xff0c;光是这些前置操作就能劝退不少人。于是尝试用InsCode(快马)平台的云端开发环境&#xff0c;意外发现能跳过所有安装步骤直接…...

第4章,[标签 Win32] :SysMets3 程序讲解01

专栏导航 上一篇&#xff1a;第4章&#xff0c;[标签 Win32] &#xff1a;SysMets3 程序代码 回到目录 下一篇&#xff1a;第4章&#xff0c;[标签 Win32] &#xff1a;SysMets3 程序讲解02&#xff0c;iVertPos 本节前言 对于本节所讲解的知识&#xff0c;有可能&#xf…...

从仿真到实战:在CST/HFSS中如何设置周期性边界条件评估紧耦合天线阵元性能

从仿真到实战&#xff1a;在CST/HFSS中设置周期性边界条件评估紧耦合天线阵元性能 天线阵列设计中最具挑战性的环节之一&#xff0c;是如何准确预测单个阵元在阵列环境中的真实工作状态。当我在设计第一个超宽带相控阵时&#xff0c;曾因忽视阵元间互耦效应导致实物测试结果与仿…...

PyCharm+Conda环境避坑指南:手把手配置Real-ESRGAN,解决‘torch.cuda.is_available()‘报错和依赖冲突

PyCharmConda环境避坑指南&#xff1a;手把手配置Real-ESRGAN&#xff0c;解决‘torch.cuda.is_available()‘报错和依赖冲突 图像超分辨率技术正在改变我们处理低质量图像的方式&#xff0c;而Real-ESRGAN作为当前最先进的通用图像修复模型之一&#xff0c;其效果令人惊艳。但…...