モールシステムを構築する過程で、注文リマインダー機能、つまり新しい注文が来たときにリマインドする機能が必要になります。私の実装方法は、注文後に「新しい注文があります。慎重に確認してください。」というプロンプトが表示されるというものです。
(推奨学習: PHP プログラミングの入門から習熟まで
)
<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>
上記は、このソリューションの核心です。独自のビジネスロジックに従ってバックエンドコードを記述してください。
実際、Workerman は nginx の PHP バージョンに似ており、コアもマルチプロセス Epoll ノンブロッキング IO です。各 Workerman プロセスは数万の同時接続を維持できます。
メモリ上に常駐するため、Apache、nginx、php-fpmなどのコンテナに依存せず、超高性能です。また、TCP、UDP、UNIXSOCKET、長時間接続、Websocket、HTTP、WSS、HTTPS などの通信プロトコルやさまざまなカスタム プロトコルもサポートしています。 タイマー、非同期ソケット クライアント、非同期 Mysql、非同期 Redis、非同期 Http、非同期メッセージ キューなど、多くの高性能コンポーネントが含まれています。 注文監視ページ コード:<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>バックエンド コード:
//这个方法我随便写了写,具体的处理就是在支付完成回调以后,用用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); }
以上がPHPで新しい注文プロンプト機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。