2025年workman使用手册1.0

workman使用手册1.0workman 官网地址 高性能 PHP 应用容器 workerman 1 把 workman 项目放到 linux 服务器后 需要启动你的 php 文件 才可以使用 定位到项目根目录 例 cd mnt workman 启动代码 php outin php start d

大家好,我是讯享网,很高兴认识大家。

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服务端写法


讯享网

<?php use 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:在需要使用的时候,引入是这样的:

小讯
上一篇 2025-02-08 21:06
下一篇 2025-02-25 14:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/123029.html