我使用 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/