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

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

  1. 'default_module' => 'socket',默认加载的模块为socket;
  1. 然后,在控制器里面写代码:
  1. <?php
  2. namespace app\socket\controller;
  3. use think\worker\Server;
  4. use Workerman\Lib\Timer;
  5. use think\Db;
  6. class Index extends Server
  7. {
  8. protected $socket = 'websocket://localhost:2346';
  9.  
  10. /**
  11. * 收到信息
  12. * @param $connection
  13. * @param $data
  14. */
  15. public function onMessage($connection, $data)
  16. {
  17. $connection->send('我收到你的信息了');
  18. }
  19.  
  20. /**
  21. * 当连接建立时触发的回调函数
  22. * @param $connection
  23. */
  24. public function onConnect($connection)
  25. {
  26.  
  27. }
  28.  
  29. /**
  30. * 当连接断开时触发的回调函数
  31. * @param $connection
  32. */
  33. public function onClose($connection)
  34. {
  35.  
  36. }
  37.  
  38. /**
  39. * 当客户端的连接上发生错误时触发
  40. * @param $connection
  41. * @param $code
  42. * @param $msg
  43. */
  44. public function onError($connection, $code, $msg)
  45. {
  46. echo "error $code $msg\n";
  47. }
  48.  
  49. /**
  50. * 每个进程启动
  51. * @param $worker
  52. */
  53. public function onWorkerStart($worker)
  54. {
  55.  
  56. Timer::add(5, function()use($worker){
  57.  
  58. $online_people_count = Db::name('session')->count();
  59. $deal_order_count = Db::name('order')->where('order_status',1)->count();
  60. $sale_server_count = Db::name('service')->where('service_status',1)->count();
  61. //echo "".$online_people_count.'--------'.$deal_order_count.'----------'.$sale_server_count;
  62.  
  63. $z="{$online_people_count},{$deal_order_count},{$sale_server_count}";
  64.  
  65. foreach($worker->connections as $connection) {
  66. $connection->send($z);
  67. }
  68. });
  69. }
  70. }
  1. 这边的代码主要还是看,onWorkerStart这个方法,这个方法,获取数据库的值之后,传给需要接收那个数据的
  1. 视图模块,就是页面需要哪里显示那个数据,就是通过这里来发送的数据,这里是每五秒访问一次数据库
  1. 有了这些之后在,视图模块代码里面接收数据的代码:
  1. //监听消息
  2. // 连接服务端
  3. try{
  4. ws = new WebSocket("ws://localhost:2346");
  5. ws.onopen = function() {
  6. console.log('连接成功');
  7.  
  8. };
  9. ws.onmessage = function(e) {
  10. var result = e.data.split(',');
  11. if(result.length==3){
  12. $("#on_people_sum").html(result[0]);
  13. $("#menu23").html(result[1]);
  14. $("#menu28").html(result[2]);
  15. }
  16.  
  17. };
  18.  
  19. }catch(err){
  20.  
  21. }
  1. 这样上面的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. Programming Languages: Application and Interpretation

    http://cs.brown.edu/courses/cs173/2012/book/ 1 Introduction 1.1 Our Philosophy 1.2 The Structure of ...

  2. 将DHT11移植到Linux系统上(转)

    由于项目需要,需要将DHT11移植到Linux.驱动程序如下 #include <linux/kernel.h> #include <linux/module.h> #incl ...

  3. 你正在从一个声称代表如下的证书颁发机构安装证书 alipay truest network,希望能知道程序是怎么实现的或相关资料

    你正在从一个声称代表如下的证书颁发机构安装证书 alipay truest network,希望能知道程序是怎么实现的或相关资料

  4. oracle数据库死锁的查看及解决

    Oracle常见死锁发生的原因以及解决方法 www.MyException.Cn  网友分享于:2014-09-02  浏览:0次       Oracle常见死锁发生的原因以及解决办法 一,删除和更 ...

  5. Erlang ets -- something about cache continue

    上一次说到了实现一个简单cache 的基本思路和想法, http://www.cnblogs.com/--00/p/erlang_ets_something_about_cache.html 在文末, ...

  6. spring RestTemplate用法详解

    spring RestTemplate用法详解 spring 3.2.3 框架参考有说明 21.9 Accessing RESTful services on the Client

  7. 简易的RPC调用框架(大神写的)

    RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Servi ...

  8. Golang后台开发初体验

    转自:http://blog.csdn.net/cszhouwei/article/details/37740277 补充反馈 slice 既然聊到slice,就不得不提它的近亲array,这里不太想 ...

  9. 生成式对抗网络(GAN)

    生成对抗网络(GAN),是深度学习模型之一,2014年lan Goodfellow的开篇之作Generative Adversarial Network, GAN概述 GAN包括两个模型,一个是生成模 ...

  10. HDFS文件系统

    Hadoop 附带了一个名为 HDFS(Hadoop分布式文件系统)的分布式文件系统,专门存储超大数据文件,为整个Hadoop生态圈提供了基础的存储服务. 本章内容: 1) HDFS文件系统的特点,以 ...