1.现实情况

我们在做商城系统的过程当中,会要求做一个订单提醒的功能,即来新的订单会提醒。我实现的方法是有订单后就会提醒“您有新的订单,请注意查收!”

2.解决方案

2.1ajax轮询

轮询的方法比较简单,就是每过多少秒发起一次请求。如果项目中的订单不多,每隔多少秒发一次请求会对服务器有挺大的压力。我将轮询关键的代码贴出来,仅供参考。

<script>setInterval("order()",59000000);//每59秒刷新查询一次var last_count = {$count};function order() {var data = {'last_count':last_count};$.ajax({type: "POST",data: data,url: "{:url('Order/sendOrderNotice')}",//后台方法timeout: 60000,cache: false,async: false,dataType: "json",success: function(data) {if(data.status == 1){var audio = document.getElementById( "play" ); //浏览器支持 audioaudio.play(); //播放提示音last_count = data.last_count;setTimeout(function(){window.location.reload();}, 3000);}}});}</script>

上面就是这个解决方案的核心。后端的代码请根据自己的业务逻辑编写。

2.2 结合workerman实现

这个方法是我比较推荐的。利用了workerman编写一段推送框架。具体参考:

https://www.workerman.net/web-sender

3.准备工作

下载workerman。

上图是下载好的包。点击start_for_win.bat。

出现这个表示服务启动了。

4.解决过程

订单监控页面端的代码:

<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js"></script>
<script>// 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ipvar socket = io('http://www.tp5_test.com:2120'); //http://www.tp5_test.com换成自己的域名或者ip// uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数,这个ID可以随便写uid = 1557062581000;// socket连接后以uid登录socket.on('connect', function(){socket.emit('login', uid);});<!--// 后端推送来消息时-->socket.on('new_msg', function(msg){//两种处理方式// 1 追加到页面元素中,可以做成页面的弹窗$("#msg").append(msg); //2 播放提示应 :if(msg == 1){var audio = document.getElementById( "play" ); //浏览器支持 audioaudio.play(); //播放提示音}});// 后端推送来在线数据时socket.on('update_online_count', function(online_stat){console.log(online_stat);});
</script>

后端代码:

    //这个方法我随便写了写,具体的处理就是在支付完成回调以后,用用send_workerman方法就可以了。我是用sends来模型支付完成以后的回调public function sends($id){// var_dump($id);die;if($id == 1){$this->send_workman($id);}else{echo '没有发送消息';}}/*** @route('send_workman')*/public function send_workman($id){$to_uid = '1557062581000'; //和页面的uid一致,不填写也可以// 推送的url地址,使用自己的服务器地址$push_api_url = "http://www.tp5_test.com:2121/";$post_data = array("type" => "publish","content" => $id,"to" => $to_uid,);$ch = curl_init ();curl_setopt ( $ch, CURLOPT_URL, $push_api_url );curl_setopt ( $ch, CURLOPT_POST, 1 );curl_setopt ( $ch, CURLOPT_HEADER, 0 );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );curl_setopt ( $ch, CURLOPT_HTTPHEADER, array("Expect:"));$return = curl_exec ( $ch );curl_close ( $ch );var_export($return);}

5.总结

两种方式都可以使用,推荐使用第二种,代码已经经过测试无问题。如果帮助到你的话,那就很棒了。如果有什么疑问的话,可以给我发邮件:m13188999295@163.com。我尽量答复。

PHP实现新订单提醒功能。相关推荐

  1. php新订单提醒代码,PHP怎么实现新订单提醒功能

    PHP实现新订单提醒功能的方法:首先实现ajax轮询:然后下载workerman:接着连接服务端,代码为"var socket = io('http://www.tp5_test.com:2 ...

  2. 巧妙的新订单提醒功能

    人不能时刻盯着屏幕,需要提醒.  或者语音提醒,或者短信提醒.短信提醒成本高,二是手机马上被塞满.  通过JS定时刷新,调取接口,巧妙的解决了这个问题.  定时去数据库查询,最近一天,是否有已支付,未 ...

  3. 小程序中商家入驻提醒、新订单提醒

    1. 应用场景 ThinkPHP技术QQ群: 828567087 用户在小程序商城购买下单之后,商家如何能及时收到新订单提醒,进行发货处理呢? 用户在小程序中申请入驻商家后,平台管理员如何能及时收到入 ...

  4. JAVA----钉钉机器人-订单提醒功能

    钉钉机器人-订单提醒功能 钉钉机器人在线文档:https://open.dingtalk.com/document/robots/customize-robot-security-settings 第 ...

  5. js定时触发-----新订单提醒展示效果并提示音效

    展示效果 <!--CSS代码--> <style>.add_blank{position:absolute;left:14%;width:34%;font-size:32px; ...

  6. android新消息提醒功能,Android仿微信新消息提示音

    怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 具体实现的步骤. 难点之一:获取 ...

  7. websocket 之 简单实现消息小红点,消息推送,或者说是未读提醒,新订单提醒(一)

    说明:这里是单机的websocket,没有部署到服务器,本人开了360浏览器和chrome来分别模拟两个买家客户端和商家客户端. 模拟对象暂时是只有一个接受方(consumer),许多个发送方(pro ...

  8. 用asp.net 实现页面的新消息提醒功能

    如校内网和开心网有这样的功能. 把网页最小化,去干别的事,可是当校内网有新的消息时,那个最小化的校内网的标题栏,出现[新提醒]的字样,还在闪. 主要想实现页面的提示效果(定时刷新查询数据库已经好了) ...

  9. ajax轮询新订单提醒

    –html <div style="display: none"><audio controls id='play'><source src=&quo ...

最新文章

  1. 第二十五章 面向对象------封装、内置函数、反射、动态导入
  2. python中bind的用法_JS中的apply、call和bind的用法和区别
  3. 地图上实现高效率绘制海量点的原理
  4. React Suite 做了一个有意思的决定
  5. kafka console 生产消费消息
  6. kibana操作elasticsearch:创建映射字段
  7. MySQL【付诸实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
  8. linux 查找py文件命令_在 Linux 中如何从命令行查找 VirtualBox 版本
  9. [COCI 2017-2018-2]-San
  10. Apollo进阶课程㉜丨Apollo ROS原理—1
  11. Qt学习笔记-基于QGraphicsScene的填词游戏
  12. MySQL锁系统总结
  13. Android(java)学习笔记133:Eclipse中的控制台不停报错Can't bind to local 8700 for debugger...
  14. 六种数据格式CSV、 Pickle、MessagePack、HDF5、Feather、 Parquet的比较
  15. ad13批量安装元件库_别人的altium designer常用元件库和封装库下载-非常全面初学者有福了...
  16. 三级网络技术IP地址
  17. win7 java修复工具哪个好_DLL修复工具哪个好
  18. 2017-AHU校赛网络赛解题报告
  19. Android build.prop参数详解
  20. 图片CenterCrop和圆角问题(Glide加载)

热门文章

  1. gpu虚拟 服务器,5种GPU虚拟化技术的详细资料讲解
  2. 英语基础-倒装句型·部分倒装
  3. Porteus全桥整流电路仿真遇到的问题
  4. Android 文字转语音使用讯飞语音SDK(eclipse版 无UI)
  5. linux 不装显卡驱动 3d性能,Nouveau Gallium3D开源驱动N卡性能测试
  6. imgburn dvd_如何使用ImgBurn刻录或刻录包含CD文本的CD(CD-R)
  7. 交通科研狗日常论文分析(1)考虑驾驶风格的跟驰模型构建及交通震荡仿真研究
  8. 全国影城年底前引进4K技术 观影清晰度翻倍增长
  9. WebBrowser and Cookies
  10. D58|单调栈Part1+基础篇