php - 可以从 REDIS 订阅返回响应吗?

标签 php laravel redis subscribe predis

我使用 predis,我想订阅 PHP channel 并等待 30 秒。如果在 channel 没有收到任何消息,返回 json 响应。或者如果 channel 中的消息存在,也返回响应并退出。

例如,我希望我的 Redis::subscribe 返回 $message 并且我可以返回响应。

我在 Laravel 的 Controller 中有一些代码:

 Redis::subscribe(['PushAuthChanel'], function($message) {


  echo $message; // Nothing happens
  return response()->json($c, 200); // Nothing happens
  //return $message; // Nothing happens too

    });

为什么 Redis::subscribe 不能返回 $message? 但它会像这样返回退出代码:

Redis::subscribe(['PushAuthChanel'], function($message) {


return exit(0); //will work
dd($message); //will work fine

});

最佳答案

还在等答案吗?反正。您可以这样更改代码:

    $pubsub = Redis::pubSubLoop();
    $pubsub->subscribe('channel-name');
    foreach ($pubsub as $message) {
        print_r ($message);
        // You can unsubscribe any time you want by using this function:
        // $pubsub->unsubscribe();
    }

关于php - 可以从 REDIS 订阅返回响应吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44998381/

相关文章:

javascript - 通过jquery提交(smarty)

php - 将信息从数据库传递到 Bootstrap Modal

PHP Zend Youtube API 上传 - 此操作错误需要开发人员 key

javascript - 使用同一组件中的方法在 Vue 组件中查找特定数据时遇到问题

php - Laravel 5.2 关系 hasMany 与另一个唯一标识符

redis - 尝试将 redis 插件用于 play framework v2

php - 未定义索引 : (this is for multiple lines of code in 2 different documents)

php - 使用 Laravel 存储日期

node.js - Redis 服务重启时出现 Redis 错误 "NOSCRIPT No matching script. Please use EVAL"

python - 在Python中Unpickling "None"对象