Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie eine neue Bestellaufforderungsfunktion in PHP
Während des Aufbaus des Mall-Systems werden wir um eine Bestellerinnerungsfunktion bitten, d. h. wenn eine neue Bestellung eingeht, wird diese daran erinnert. Die Art und Weise, wie ich es umsetze, ist, dass nach der Bestellung eine Erinnerung angezeigt wird: „Sie haben eine neue Bestellung, bitte überprüfen Sie diese sorgfältig!“ Lösung
(Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung
)
<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" ); //浏览器支持 audio
audio.play(); //播放提示音
last_count = data.last_count;
setTimeout(function(){
window.location.reload();
}, 3000);
}
}
});
}
</script>
Das Obige ist der Kern dieser Lösung. Bitte schreiben Sie den Back-End-Code entsprechend Ihrer eigenen Geschäftslogik.
Tatsächlich ähnelt Workerman einer PHP-Version von Nginx. Der Kern besteht ebenfalls aus Multiprozess + Epoll + nicht blockierendem IO. Jeder Workerman-Prozess kann Zehntausende gleichzeitiger Verbindungen aufrechterhalten.
Da es sich im Speicher befindet, ist es nicht auf Container wie Apache, Nginx und PHP-FPM angewiesen und verfügt über eine extrem hohe Leistung. Es unterstützt außerdem TCP, UDP, UNIXSOCKET, lange Verbindungen, Websocket, HTTP, WSS, HTTPS und andere Kommunikationsprotokolle sowie verschiedene benutzerdefinierte Protokolle. Es verfügt über viele leistungsstarke Komponenten wie Timer, asynchrone Socket-Clients, asynchrones MySQL, asynchrones Redis, asynchrones HTTP, asynchrone Nachrichtenwarteschlangen usw. Code der Auftragsüberwachungsseite:<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服务的域名或者ip var 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" ); //浏览器支持 audio audio.play(); //播放提示音 } }); // 后端推送来在线数据时 socket.on('update_online_count', function(online_stat){ console.log(online_stat); }); </script>Backend-Code:
//这个方法我随便写了写,具体的处理就是在支付完成回调以后,用用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); }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine neue Bestellaufforderungsfunktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!