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官网地址:高性能PHP应用容器 workerman 1:把workman项目放到linux服务器后,需要启动你的php文件,才可以使用 定位到项目根目录:例:cd /mnt/workman 启动代码:php outin.php start -d 停…...
Cesium深入浅出之自定义材质
引子 做为一名技术宅却没有能拿得出手的技术无疑是最可悲的事情。三年前,当我第一次接触Cesium的时候就被它强大和炫丽所折服,最关键的是它还是开源的。以前我一直是机械地敲着业务代码,好像计算机程序就只能干这点事情一样,而 C…...
Appium移动自动化测试--安装Appium
Appium 自动化测试是很早之前就想学习和研究的技术了,可是一直抽不出一块完整的时间来做这件事儿。现在终于有了。 反观各种互联网的招聘移动测试成了主流,如果再不去学习移动自动化测试技术将会被淘汰。 web自动化测试的路线是这样的:编程语…...
前端学习笔记--ES6
修正 ES6是ECMA为JavaScript制定的第6个标准版本,相关历史可查看此章节《ES6-ECMAScript6简介》。 标准委员会最终决定,标准在每年6月正式发布并作为当年的正式版本,接下来的时间里就在此版本的基础上进行改动,直到下一年6月草案…...
冥想第九百七十八天
1.周四,今天客户又发飙了,这次的锅我有点不好受。因为压力很大,所以日语课就不去上了。自己做了题。 2.今天中午跑了步,心率还是有点高了,估计跟穿得最后得薄款羽绒服有关。经过昨天晚上的休息,感觉身体好多…...
Maven分离资源文件
Spring Boot 项目默认的会将所有资源文件、依赖文件、配置文件等打包成单一的 jar 文件,但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。 这时候可以在 pom.xml 文件中进行配置,从而使资源文件、依赖包和可执行文件分离。 本文主要…...
Linux CentOS 8(MariaDB概述)
Linux CentOS 8(MariaDB概述) 目录 一、项目描述二、相关知识2.1 数据库的基本介绍2.2 数据库的分类介绍 三、项目分析3.1 安装并启动 MariaDB3.2 登录 MariaDB 数据库3.3 提高 MariaDB 安装安全性 一、项目描述 Jan16 公司为满足部门之间数据共享、减少…...
简述几个我们对Redis 7开源社区所做的贡献
Redis 7 已经于2022年4月28号正式发布,其中包括了将近50个新的命令,增加了许多新的特性,并且在整个Redis 6到Redis 7的开发过程中,我也对Redis 的开源社区贡献了一些微薄的力量。在这篇文章中,我来给大家介绍几个自己亲…...
产品卖点怎么写,如何打造卖点?
...
跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】
目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…...
C++ this 指针 面试
this 指针 this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。 当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,都隐…...
虚拟机上安装docker,并安装flink镜像
1. 安装docker 官网步骤: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:组成部分角度2:工作方式角度3:功能组成 功能分类按分布范围分按使用者分按交换技术按拓扑结构分按传输技术分 标准化工作及相关组织标准化工作相关组织 概念 三网融合 通过 计算机网络,将 电信网…...
003 OpenCV filter2D
目录 一、环境 二、图像卷积 三、代码演示 3.1、锐化 3.2、sobel边缘,x方向 3.3、sobel边缘,y方向 3.4、高斯模糊 3.5、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、图像卷积 在OpenCV…...
轻松玩转华为MateX5分屏功能,乐趣层出不穷!
✅小窗交互,沉浸体验不打断; ✅分区截屏,花式截图,一招搞定; ✅跨屏拖拽,随心分享易如反掌; ✅悬停视频会议,沟通效率大不同。...
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、内核空间与用户空间数据交换方式 分两种情况: 1> 需要交换的数据量较大时; 2> 需要交换的数据量较小时; 第一种情况使用以下的函数: 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又有新动作?
大批卖家产品被下架!Temu又有新动作? 近日,Temu正式上线韩国站,截止目前已上线27个国家地区。Temu海外市场发展迅猛,外界的声音也褒贬不一。这其中最有发言权的,应该就是Temu平台的卖家了! …...
STM32 LL库 TIM3定时器多通道捕获输入采集
为什么不用HAL库,使用HAL库捕获输入一个通道还尚可,多通道捕获由于HAL的回调函数不符合我的要求,干脆直接切换到LL库。网上找了许多,代码处理写的不符合我的要求,这里记录一下我的调试过程。 TIM2输出1路PWM信号&#…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
