经理给的要求:然后另外写个php程序,定时读取这个表格,然后把消息发送给代理的异步通知的地址上。。。
数据库表我已经弄好了,但不知道怎么弄异步通知。。。没一点概念。。。谁帮助下。
后来经理又说nodejs会效率高点,但我一点没接处过nodejs,谁能说下nodejs做这个的例子。
经理给的要求:然后另外写个php程序,定时读取这个表格,然后把消息发送给代理的异步通知的地址上。。。
数据库表我已经弄好了,但不知道怎么弄异步通知。。。没一点概念。。。谁帮助下。
后来经理又说nodejs会效率高点,但我一点没接处过nodejs,谁能说下nodejs做这个的例子。
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
,执行
php crond.php
使用命令行模式运行PHP脚本时,不存在超时概念
php并没有异步执行吧??异步是用ajax来实现的好不好,用jquery会不?
$.ajax({
type:'GET',
url:"请求地址",
dataType:"json",
data:"要传的数据"
success:function(data){
}
});
你要是定时传送 建议你用js写个定时器,或者写个死循环 sleep下就可以的 。将数据用ajax定时调取你写的php文档 而文档就是你要定时执行的内容!可以了不??
看你题干的意思,如果延时要求不是精确到秒的话,用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中的分发器,共享通讯到每个新创建的子进程,然后由子进程分发给不同的客户端。
5 回答4.8k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
其实都是跑一个后台处理进程实现,或者使用系统定时任务。
1、php 用守护进程,在一个while里面循环判断时间,到时间之行读取表格操作
2、nodejs,也是跑一个服务,setTimeout的方式实现
3、使用系统定时任务cron 触发程序