首页
仓库
文档
nginx手册
Docker手册
workerman
Flask
PHP
python
RabbitMQ
其他
Linux
占位1
占位2
目录
###udp 服务端 <?php require 'vendor/autoload.php'; use Workerman\Worker; Worker::$logFile = './udp.txt'; $worker = new Worker("udp://0.0.0.0:8777"); $worker->name = 'test_udp'; // 启动4个进程对外提供服务 $worker->count = 2; //设置Worker子进程启动时的回调函数,每个子进程启动时都会执行。 $worker->onWorkerStart = function($worker) { // 将db实例存储在全局变量中(也可以存储在某类的静态成员中) global $db; $db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'udpdata', '123', 'udpdata'); echo "开启进程 ID:{$worker->id}\n"; }; // 当客户端通过连接发来数据时(Workerman收到数据时)触发的回调函数 $worker->onMessage = function($connection, $data) use($worker) //connection->连接对象 data->客户端连接上发来的数据 { global $db; $now_time = date("Y-m-d H:i:s",time()); $db->insert('d2')->cols(array('baowen'=>$data,'addtime'=>$now_time))->query();//写入任务表 $connection->send('receive success ok:'.$data); //返回值 $connection->close(""); // 关闭 }; //当客户端的连接上发生错误时触发。 $worker->onError = function($connection, $code, $msg) use($worker) { // echo '进程:'.$worker->id.' 连接:'.$connection->id.' IP:'. $connection->getRemoteIp()." 发生错误\n"; }; Worker::runAll(); ###udp 客户端 <?php require 'vendor/autoload.php'; //自动加载 use Workerman\Timer; use Workerman\Worker; use Workerman\Connection\AsyncUdpConnection; use Workerman\Connection\UdpConnection; $worker = new Worker("tcp://0.0.0.0:20000"); $worker->count = 1; //设置Worker子进程启动时的回调函数,每个子进程启动时都会执行。 $worker->onWorkerStart = function($worker) { // 每1秒执行一次 Timer::add(0.01, function() use($db,$worker) { $udp_connection = new AsyncUdpConnection('udp://127.0.0.1:8777'); $udp_connection->onConnect = function($udp_connection){ $udp_connection->send('hi'); }; $udp_connection->onMessage = function($udp_connection, $data){ // 收到服务端返回的数据 hello echo "recv $data\r\n"; // 关闭连接 $udp_connection->close(); }; $udp_connection->connect(); //执行异步连接操作。此方法会立刻返回。 }); }; //当客户端的连接上发生错误时触发。 $worker->onError = function($connection, $code, $msg) use($worker) { echo '进程:'.$worker->id.' 连接:'.$connection->id.' IP:'. $connection->getRemoteIp()." 发生错误\n"; }; Worker::runAll();