扫码关注官方订阅号
经理给的要求:然后另外写个php程序,定时读取这个表格,然后把消息发送给代理的异步通知的地址上。。。数据库表我已经弄好了,但不知道怎么弄异步通知。。。没一点概念。。。谁帮助下。后来经理又说nodejs会效率高点,但我一点没接处过nodejs,谁能说下nodejs做这个的例子。
学习是最好的投资!
其实都是跑一个后台处理进程实现,或者使用系统定时任务。1、php 用守护进程,在一个while里面循环判断时间,到时间之行读取表格操作2、nodejs,也是跑一个服务,setTimeout的方式实现3、使用系统定时任务cron 触发程序
nodejs+socket.io+php完全能实现!
node监听在一个端口上,客户端访问页面,通过websocket接收消息。像聊天室一样
楼主可以先google下socket.io,对你有很大帮助。
注:慎用ajax,此需求ajax太笨重
文件名 crond.php
<?php do { $data = []; // 读取Excel代码,读取完之后是个数组没问题吧 curl();// 使用CURL将数据传输到异步通知地址 sleep(3600);// 休眠一小时 } while(true);
运行方式,打开CMD或者终端,找到PHP.exe/php程序所在路径,假设为\usr\bin\php,windows下假设c:\php\php.exe,执行
\usr\bin\php
c:\php\php.exe
php crond.php
使用命令行模式运行PHP脚本时,不存在超时概念
异步的话用ajax就行了,最简单。php做一个定时执行的页面。通过ajax异步提交到数据库。
php并没有异步执行吧??异步是用ajax来实现的好不好,用jquery会不?
$.ajax({ type:'GET', url:"请求地址", dataType:"json", data:"要传的数据" success:function(data){ } }); 你要是定时传送 建议你用js写个定时器,或者写个死循环 sleep下就可以的 。将数据用ajax定时调取你写的php文档 而文档就是你要定时执行的内容!可以了不??
服务器设置定时任务,每隔一段时间执行php 脚本(查询数据库,发送通知)
楼上几个说用ajax 的,这种方式可以实现功能但是 得有一个页面在浏览器中运行吧?关了页面就废了
看你题干的意思,如果延时要求不是精确到秒的话,用php完全可以迅速完成的,利用系统的定时任务,定时执行你的php脚本就行了,php脚本里面就查下表格,然后发送消息就行了,当然了,这是在cli模式下执行,没有在web下面执行,也就没有页面上的提醒功能了。
const TIME = 3600 * 10; const request = require('request'); //一个NodeJS模块 function sendMsg(){ //给你的服务器发数据 request.post('http://127.0.0.1/your-interface', (err, response) => { }).form({ data: 'ssss' }); setTimeout(sendMsg, TIME);//隔一段时间执行 } sendMsg();//开始执行
思路就是使用websocket
nodejs本身启动后就是一个服务,内置的socket.io可以方便的建立websocket链接
第一种方案:自己写代码,创建守护进程,建立socket监听第二种方案:使用php扩展,swoole,不建议新手使用第三种方案:使用workerman(php写的),启动守护进程
前端的处理就是使用websocket和创建的服务器建立长连接通讯就行了
使用队列
守护进程来消耗队列中的数据,新数据直接打入队列中,守护进程将队列中的数据消耗掉,分发到每个客户端。
不用队列也可以的,这样只是为了防止消息太多会阻塞,可以使用workerman中的分发器,共享通讯到每个新创建的子进程,然后由子进程分发给不同的客户端。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
其实都是跑一个后台处理进程实现,或者使用系统定时任务。
1、php 用守护进程,在一个while里面循环判断时间,到时间之行读取表格操作
2、nodejs,也是跑一个服务,setTimeout的方式实现
3、使用系统定时任务cron 触发程序
nodejs+socket.io+php完全能实现!
node监听在一个端口上,客户端访问页面,通过websocket接收消息。像聊天室一样
楼主可以先google下socket.io,对你有很大帮助。
注:慎用ajax,此需求ajax太笨重
文件名 crond.php
运行方式,打开CMD或者终端,找到PHP.exe/php程序所在路径,假设为
\usr\bin\php,windows下假设c:\php\php.exe,执行使用命令行模式运行PHP脚本时,不存在超时概念
异步的话用ajax就行了,最简单。php做一个定时执行的页面。通过ajax异步提交到数据库。
php并没有异步执行吧??异步是用ajax来实现的好不好,用jquery会不?
服务器设置定时任务,每隔一段时间执行php 脚本(查询数据库,发送通知)
楼上几个说用ajax 的,这种方式可以实现功能但是 得有一个页面在浏览器中运行吧?
关了页面就废了
看你题干的意思,如果延时要求不是精确到秒的话,用php完全可以迅速完成的,
利用系统的定时任务,定时执行你的php脚本就行了,php脚本里面就查下表格,然后发送消息就行了,当然了,这是在cli模式下执行,没有在web下面执行,也就没有页面上的提醒功能了。
思路就是使用websocket
node
nodejs本身启动后就是一个服务,内置的socket.io可以方便的建立websocket链接
php
第一种方案:自己写代码,创建守护进程,建立socket监听
第二种方案:使用php扩展,swoole,不建议新手使用
第三种方案:使用workerman(php写的),启动守护进程
前端的处理就是使用websocket和创建的服务器建立长连接通讯就行了
如何做到消息推送交流呢?
使用队列
守护进程来消耗队列中的数据,新数据直接打入队列中,守护进程将队列中的数据消耗掉,分发到每个客户端。
补充
不用队列也可以的,这样只是为了防止消息太多会阻塞,可以使用workerman中的分发器,共享通讯到每个新创建的子进程,然后由子进程分发给不同的客户端。