国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

node.js - 用php或nodejs異步通知,沒(méi)一點(diǎn)思路
PHPz
PHPz 2017-04-11 09:58:09
0
9
438

經(jīng)理給的要求:然后另外寫(xiě)個(gè)php程序,定時(shí)讀取這個(gè)表格,然后把消息發(fā)送給代理的異步通知的地址上。。。
數(shù)據(jù)庫(kù)表我已經(jīng)弄好了,但不知道怎么弄異步通知。。。沒(méi)一點(diǎn)概念。。。誰(shuí)幫助下。
后來(lái)經(jīng)理又說(shuō)nodejs會(huì)效率高點(diǎn),但我一點(diǎn)沒(méi)接處過(guò)nodejs,誰(shuí)能說(shuō)下nodejs做這個(gè)的例子。

PHPz
PHPz

學(xué)習(xí)是最好的投資!

reply all(9)
伊謝爾倫

其實(shí)都是跑一個(gè)后臺(tái)處理進(jìn)程實(shí)現(xiàn),或者使用系統(tǒng)定時(shí)任務(wù)。
1、php 用守護(hù)進(jìn)程,在一個(gè)while里面循環(huán)判斷時(shí)間,到時(shí)間之行讀取表格操作
2、nodejs,也是跑一個(gè)服務(wù),setTimeout的方式實(shí)現(xiàn)
3、使用系統(tǒng)定時(shí)任務(wù)cron 觸發(fā)程序

迷茫

nodejs+socket.io+php完全能實(shí)現(xiàn)!

node監(jiān)聽(tīng)在一個(gè)端口上,客戶(hù)端訪問(wèn)頁(yè)面,通過(guò)websocket接收消息。像聊天室一樣

樓主可以先google下socket.io,對(duì)你有很大幫助。

注:慎用ajax,此需求ajax太笨重

PHPzhong

文件名 crond.php

<?php
do {
    $data = []; // 讀取Excel代碼,讀取完之后是個(gè)數(shù)組沒(méi)問(wèn)題吧
    curl();// 使用CURL將數(shù)據(jù)傳輸?shù)疆惒酵ㄖ刂?    sleep(3600);// 休眠一小時(shí)
} while(true);

運(yùn)行方式,打開(kāi)CMD或者終端,找到PHP.exe/php程序所在路徑,假設(shè)為\usr\bin\php,windows下假設(shè)c:\php\php.exe,執(zhí)行

php crond.php

使用命令行模式運(yùn)行PHP腳本時(shí),不存在超時(shí)概念

迷茫

異步的話用ajax就行了,最簡(jiǎn)單。php做一個(gè)定時(shí)執(zhí)行的頁(yè)面。通過(guò)ajax異步提交到數(shù)據(jù)庫(kù)。

阿神

php并沒(méi)有異步執(zhí)行吧??異步是用ajax來(lái)實(shí)現(xiàn)的好不好,用jquery會(huì)不?

 $.ajax({
 type:'GET',
 url:"請(qǐng)求地址",
 dataType:"json",
 data:"要傳的數(shù)據(jù)"
 success:function(data){
 }
});
你要是定時(shí)傳送 建議你用js寫(xiě)個(gè)定時(shí)器,或者寫(xiě)個(gè)死循環(huán) sleep下就可以的 。將數(shù)據(jù)用ajax定時(shí)調(diào)取你寫(xiě)的php文檔 而文檔就是你要定時(shí)執(zhí)行的內(nèi)容!可以了不??
Ty80

服務(wù)器設(shè)置定時(shí)任務(wù),每隔一段時(shí)間執(zhí)行php 腳本(查詢(xún)數(shù)據(jù)庫(kù),發(fā)送通知)

樓上幾個(gè)說(shuō)用ajax 的,這種方式可以實(shí)現(xiàn)功能但是 得有一個(gè)頁(yè)面在瀏覽器中運(yùn)行吧?
關(guān)了頁(yè)面就廢了

小葫蘆

看你題干的意思,如果延時(shí)要求不是精確到秒的話,用php完全可以迅速完成的,
利用系統(tǒng)的定時(shí)任務(wù),定時(shí)執(zhí)行你的php腳本就行了,php腳本里面就查下表格,然后發(fā)送消息就行了,當(dāng)然了,這是在cli模式下執(zhí)行,沒(méi)有在web下面執(zhí)行,也就沒(méi)有頁(yè)面上的提醒功能了。

PHPzhong
const TIME = 3600 * 10;
const request = require('request'); //一個(gè)NodeJS模塊
function sendMsg(){
    //給你的服務(wù)器發(fā)數(shù)據(jù)
    request.post('http://127.0.0.1/your-interface', (err, response) => {
    
    }).form({
        data: 'ssss'
    });
    setTimeout(sendMsg, TIME);//隔一段時(shí)間執(zhí)行
}
sendMsg();//開(kāi)始執(zhí)行
劉奇

思路就是使用websocket

node

nodejs本身啟動(dòng)后就是一個(gè)服務(wù),內(nèi)置的socket.io可以方便的建立websocket鏈接

php

第一種方案:自己寫(xiě)代碼,創(chuàng)建守護(hù)進(jìn)程,建立socket監(jiān)聽(tīng)
第二種方案:使用php擴(kuò)展,swoole,不建議新手使用
第三種方案:使用workerman(php寫(xiě)的),啟動(dòng)守護(hù)進(jìn)程

前端的處理就是使用websocket和創(chuàng)建的服務(wù)器建立長(zhǎng)連接通訊就行了

如何做到消息推送交流呢?

使用隊(duì)列

守護(hù)進(jìn)程來(lái)消耗隊(duì)列中的數(shù)據(jù),新數(shù)據(jù)直接打入隊(duì)列中,守護(hù)進(jìn)程將隊(duì)列中的數(shù)據(jù)消耗掉,分發(fā)到每個(gè)客戶(hù)端。

補(bǔ)充

不用隊(duì)列也可以的,這樣只是為了防止消息太多會(huì)阻塞,可以使用workerman中的分發(fā)器,共享通訊到每個(gè)新創(chuàng)建的子進(jìn)程,然后由子進(jìn)程分發(fā)給不同的客戶(hù)端。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template