基于workerman实现统计在线人数的方法和代码是什么
Admin 2022-07-23 群英技术资讯 771 次浏览
今天就跟大家聊聊有关“基于workerman实现统计在线人数的方法和代码是什么”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“基于workerman实现统计在线人数的方法和代码是什么”文章能对大家有帮助。
workerman统计在线人数实现代码:
服务器端代码
<?php
use Workerman\Worker;
use Workerman\Lib\Timer;
require_once __DIR__ . '/Workerman/Autoloader.php';
$worker = new Worker('websocket://127.0.0.1:2345');
// 全局变量,保存当前进程的客户端连接数
$connection_count = 0;
// 这个例子中进程数必须为1
$worker->count = 1;
$worker->onConnect = function($connection)
{
// 有新的客户端连接时,连接数+1
global $connection_count;
++$connection_count;
echo "now connection_count=$connection_count\n";
};
// 进程启动时设置一个定时器,定时向所有客户端连接发送数据
$worker->onWorkerStart = function($worker)
{
// 定时,每10秒一次
Timer::add(1, function()use($worker)
{
global $connection_count;
// 遍历当前进程所有的客户端连接,发送当前服务器的时间
foreach($worker->connections as $connection)
{
$connection->send($connection_count);
}
});
};
$worker->onClose = function($connection)
{
// 客户端关闭时,连接数-1
global $connection_count;
$connection_count--;
echo "now connection_count=$connection_count\n";
};
// 运行worker
Worker::runAll();当客户端与Workerman建立连接时(TCP三次握手完成后)触发的回调函数。每个连接只会触发一次onConnect回调。
当客户端连接与Workerman断开时触发的回调函数。不管连接是如何断开的,只要断开就会触发onClose。每个连接只会触发一次onClose。
客户端代码
<?php
?>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
function ds(){
$.get('127.0.0.1:2345',function(data,status){
console.log("Data: " + data + "nStatus: " + status);
})
}
// window.setInterval(ds,1000);
ws = new WebSocket("ws://127.0.0.1:2345");
ws.onopen = function() {
//alert("连接成功");
//ws.send('tom');
//alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
//alert("收到服务端的消息:" + e.data);
console.log("收到服务端的消息:" + e.data);
};
</script>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
下面由phpstorm教程栏目给大家介绍phpstorm下如何设置babel编译,希望对需要的朋友有所帮助!
我们先来分析下规律。设定总金额为10元,有N个人随机领取:N=1第一个则红包金额=X元;N=2第二个为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数。第二个红包=10-第一个红包金额;N=3第三个红包1=0.01至9.99之间的某个随机数红包2=0.01至(10-红包1-0.01)的某个随机数红包3=10-红包1-红包2……于是我们得到
<?phpheader("Content-Type:text/html;charset=utf-8");//字符串过滤函数://1.n12br在所有新行之前插入Html换行标记。//单独的\r或\n,以及他们的组合\r\n都会转换成一次换行标记。//例:/*$str="This\nis\rmy\r\nhome";echonl2br($str);*//*输出:This
如何用php获取当前日期的7天内的时间,比如今天是5号,我想获取5号前7天的日期,怎么获取?实现方法如下:如何用php获取当前日期的7天内的时间实现方法如下:$t=time()+3600*8;//这里和标准时间相差8小时需要补足$tget=$t-3600*24*5;//比如5天前的时间echodate("Y-m-dH:i:s星期w",$tget);//格式按你需要选取例:$che
可以基于swoole和redis队列来完成一个消息通知推送功能,利用swoole开启常驻进程,需要几个按自己的情况来定,swoole进程数最好是和服务器cpu核数相等,利用swoole启动的常驻进程不断的去探测redis队列里面的值。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008