TP5想要实现时时通讯:首先先安装好composer和workerman,我之前有写一篇安装的方法,在cmd里面安装;tp5手册上面有写cmd命令的代码;接下来是安装好后如何运行的;

首先在项目中建立一个模块,这边就叫socket模块吧,里面有控制器,index.php;在此之前在config配置文件里面将

'default_module'         => 'socket',默认加载的模块为socket;
然后,在控制器里面写代码:
<?php
namespace app\socket\controller;
use think\worker\Server;
use Workerman\Lib\Timer;
use think\Db;
class Index extends Server
{
protected $socket = 'websocket://localhost:2346'; /**
* 收到信息
* @param $connection
* @param $data
*/
public function onMessage($connection, $data)
{
$connection->send('我收到你的信息了');
} /**
* 当连接建立时触发的回调函数
* @param $connection
*/
public function onConnect($connection)
{ } /**
* 当连接断开时触发的回调函数
* @param $connection
*/
public function onClose($connection)
{ } /**
* 当客户端的连接上发生错误时触发
* @param $connection
* @param $code
* @param $msg
*/
public function onError($connection, $code, $msg)
{
echo "error $code $msg\n";
} /**
* 每个进程启动
* @param $worker
*/
public function onWorkerStart($worker)
{ Timer::add(5, function()use($worker){ $online_people_count = Db::name('session')->count();
$deal_order_count = Db::name('order')->where('order_status',1)->count();
$sale_server_count = Db::name('service')->where('service_status',1)->count();
//echo "".$online_people_count.'--------'.$deal_order_count.'----------'.$sale_server_count; $z="{$online_people_count},{$deal_order_count},{$sale_server_count}"; foreach($worker->connections as $connection) {
$connection->send($z);
}
});
}
}
这边的代码主要还是看,onWorkerStart这个方法,这个方法,获取数据库的值之后,传给需要接收那个数据的
视图模块,就是页面需要哪里显示那个数据,就是通过这里来发送的数据,这里是每五秒访问一次数据库
有了这些之后在,视图模块代码里面接收数据的代码:
//监听消息
// 连接服务端
try{
ws = new WebSocket("ws://localhost:2346");
ws.onopen = function() {
console.log('连接成功'); };
ws.onmessage = function(e) {
var result = e.data.split(',');
if(result.length==3){
$("#on_people_sum").html(result[0]);
$("#menu23").html(result[1]);
$("#menu28").html(result[2]);
} }; }catch(err){ }
这样上面的result[0]...;就是数据库中获取的数据,只要数据有改变这个值就会改变;
最后在cmd里面运行D:\phpStudy\WWW\bestonapp\public>php index.php
----------------------- WORKERMAN -----------------------------
Workerman version:3.3.90          PHP version:5.4.45
------------------------ WORKERS -------------------------------
worker        listen                      processes status
none          websocket://localhost:2346   4        [OK]
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.这是最终结果;这样就能时时获取数据库的数据了;

续安装好composer和workerman之后;TP5运行workerman的操作的更多相关文章

  1. centos系统下安装使用composer教程

    Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.Composer 不是一个包管理器.是的,它涉及 "packages" ...

  2. VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器

                        VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器      View Compose服务可安装在管理虚拟机的vC ...

  3. 安装使用composer基本流程

    composer工作原理: 这里经过几个步骤:1.composer读取composer.json(这个文件手动建立,官网有格式),这个json是在当前执行composer目录的,如果目录下没有这个js ...

  4. centOS7下安装laravel + composer

    1.wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a+x /usr/local/bi ...

  5. Laravel安装和composer安装

    下载地址:https://getcomposer.org/download/ 他会自动找到你的php目录,如果没有记得手动修改  一直点下一步,即可. 如果安装不成功,可能是之前安装过composer ...

  6. TP5常用命令符操作

    ThinkPHP5常用命令符操作   1. 模块自动生成指令:   默认会读取应用目录application下面的build.php作为自动   生成的定义文件,如果你的定义文件位置不同,则需要使用 ...

  7. 无法启动调试。未安装Silverlight Developer运行时。最新运行时可以从以下地址下载: http://go.microsoft.com/fwlink/?LinkId=146060.

    无法启动调试.未安装Silverlight Developer运行时.最新运行时可以从以下地址下载: http://go.microsoft.com/fwlink/?LinkId=146060. 解决 ...

  8. 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    转自:http://www.cnblogs.com/shaddock2013/p/3155024.html 最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是V ...

  9. inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效

    inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效 inno setup 安装卸载时检测程序是佛正在运行卸载完成后自动打开网页-代码无效 --------------------- ...

随机推荐

  1. FFMPEG结构体分析:AVCodecContext(转)

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...

  2. 如何ping别人的计算机名来获取IP?

    来源:http://blog.csdn.net/qq_27109081/article/details/47128175 如何ping别人的计算机名来获取IP?            获取别人的IP, ...

  3. TS流解析 二 *****

    1.TS格式介绍 TS:全称为MPEG2-TS.TS即"Transport Stream"的缩写.它是分包发送的,每一个包长为188字节(还有192和204个字节的包).包的结构为 ...

  4. Data_Structure03-栈和队列

    一.学习总结 1.写出你认为本周学习中比较重要的知识点关键词 ·抽象数据类型 ·栈和队列 2.思维导图 二.PTA实验作业 选题: 1.7-1 jmu-字符串是否对称(20 分) 2.7-4(选做) ...

  5. js cookie 工具类

    /*cookie start*/ var Cookie=new function(){ //添加cookie this.add=function(name,value,hours){ var life ...

  6. JMS消息服务模型

    JMS--仅仅是一种规范,一种接口规约,一种编程模型.类似的JPA,JSR等 场景: 1.多个系统之间交互,实现可以采取RPC,但是交互复杂,基本就是点对点的方式 2.其实交互就是消息,而JMS就是消 ...

  7. 6_python之路之atm购物

    6_python之路之atm购物 1.程序说明:Readme.cmd supermarket 项目主目录 ├── access.log 日志文件 ├── atm atm程序 │?? ├── atm.p ...

  8. 常规Java工具,算法,加密,数据库,面试题,源代码分析,解决方案

    原文链接:http://www.tvtvso.top/?thread-5.htm 有家杂志曾对全国60岁以上的老人进行了这样一次问卷调查:你最后悔什么? 列出10项人们生活中容易后悔的事情,供被调查者 ...

  9. django-上下文渲染器,将后端内容提供给模板使用,自定义渲染器

    使用场景:当同一个类容需要出现在多个模板中, 上下文管理器就是将这个内容以字典的形式返回给所有模板,模板通过 {{ key }}取值. 结构:上下文管理器 文件名一般为context_processo ...

  10. django-给外键关系传值,删除外键关系

    反查: 在表关系里 related_name = '反查name',自己不设置,django也会默认设置为class的小写名字+_set  , ex: book_set. 一对一关系赋值: class ...