旗下导航:搜·么
当前位置:网站首页 > PHP问题 > 正文

php如何完成新定单提醒功用【php题目】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP问题浏览:97


导读:我们在做商城体系的历程当中,会要求做一个定单提醒的功用,即来新的定单会提醒。我完成的要领是有定单后就会提醒“您有新的定单,请注意查收!”解决方案ajax轮询(引...
我们在做商城体系的历程当中,会要求做一个定单提醒的功用,即来新的定单会提醒。我完成的要领是有定单后就会提醒“您有新的定单,请注意查收!”

解决方案

ajax轮询(引荐进修: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

Workerman是一款纯PHP开辟的开源高机能的PHP socket 效劳框架。

Workerman不是反复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket效劳框架,你能够用它开辟tcp代办、梯子代办、做游戏效劳器、邮件效劳器、ftp效劳器、以至开辟一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman能够说是PHP范畴的一次立异,让开辟者完全摆脱了PHP只能做WEB的约束。

现实上Workerman相似一个PHP版本的nginx,中心也是多历程+Epoll+非壅塞IO。Workerman每一个历程能保持上万并发衔接。

因为自身常住内存,不依赖Apache、nginx、php-fpm这些容器,具有超高的机能。同时支撑TCP、UDP、UNIXSOCKET,支撑长衔接,支撑Websocket、HTTP、WSS、HTTPS等通信协以及种种自定义协定。

具有定时器、异步socket客户端、异步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如何完成新定单提醒功用的细致内容,更多请关注ki4网别的相干文章!

标签:php