php - Ajax请求Redis的订阅操作无返回
怪我咯
怪我咯 2017-04-10 16:33:52
[PHP讨论组]

界面上有一个按钮,点击向后台发送Ajax请求,请求的文件内容:

redis.php:

ini_set('default_socket_timeout',25);

$redis = new Redis();
$conn = $redis->connect('127.0.0.1','6379');

if($conn){
    $redis->subscribe(array('XGD'),'ckr');
}else{
    echo '本地Redis无法连接!';
    exit;
}

function ckr($instance,$channel,$msg){
    echo $msg;
}

然后在服务器模拟向频道XGD发布消息,发布操作代码:

Publish.php:

$redis = new Redis();

$conn = $redis->connect('127.0.0.1','6379');

if($conn){
    $i=0;
    while(true){
        sleep(1);
        $i++;
        $respose['id'] = uniqid();
        $respose['v_ltl_status'] = uniqid();
        $respose['ltl_time'] = uniqid();
        $respose['ltl_reckon'] = uniqid();
        $respose['ltl_cardno'] = uniqid();
        $respose['card_type'] = uniqid();
        $respose['card_name'] = uniqid();
        $respose['ltl_cardflag'] = uniqid();
        $respose['rsd_bicc'] = uniqid();
        $respose['v_ltl_type'] = uniqid();
        
        $res_json =  json_encode(array('result'=>$respose));
        
        $redis->publish('XGD',$res_json);
        //echo '数据已经发布'.$i.'<br/>';
    }
}else{
    echo '本地Redis无法连接!';
    exit;
}

服务器使用Centos6.5, 在服务端用php命令运行publish.php,
同时进入本地redis-cli命令行,执行命令: subscribe XGD,
界面就循环出现订阅频道发布的内容,重新开启一个命令终端,用php命令执行redis.php,在命令行也出现了订阅频道发布的信息,问题是:
在Web前端的Ajax请求总是运行超时,没有返回结果。不知道为什么,还请各位大神赐教。

Ajax代码是:

function loadResult(){
        //$.pdialog.open("__URL__/getRedisInfo",'operate','操作结果',{'width':'700','height':'400','mask':true});
        
        var dt = new Date();
        var ts = dt.getTime();
        $.ajax({
            cache : false,
            type : 'post',
            url : '/redis.php',
            global: false,
            dataType : 'json',
            async : true,
            data:{time:ts},
            timeout:1000,
            success:function(data){
                $(".redis").html($(".redis").html()+data.result);
            },
            complete:function(){
                loadResult();
            }
        })
        
    }

(项目使用了Thinkphp+DWZ)

================================================================

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
迷茫

阻塞模式,不会结束,所以就超时,你在callback里面exit看看?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号