我正在关注Laravel办公室Redis指南,但我遇到了一些问题 https://laravel.com/docs/5.2/redis#pubsub
在我运行时创建命令" - > php artisan redis:订阅"在控制台中我得到以下错误
[Symfony\Component\Console\Exception\CommandNotFoundException]
There are no commands defined in the "redis" namespace.
我无法收听Redis Chanel。
Redis Publish Channel方法运行正常。检查一下。 在控制台我键入" - > redis的-CLI"然后"订阅mychannel" 在刷新浏览器时,我将在控制台中获取发布数据。
我无法通过Laravel订阅。
我也尝试过使用外卡
Route::get('/subscribe', function()
{
Redis::psubscribe(['*'], function($message, $channel) {
echo $message;
});
});
但是浏览器继续加载,我没有获得任何数据。 我也试过在控制器中创建一个方法
public function subscribeChannel()
{
$redis = Redis::Connection();
$redis->subscribe(['channel'], function($message) {
echo $message;
});
}
此subscribeChannel方法给出了以下错误
ErrorException in StreamConnection.php line 390:
strlen() expects parameter 1 to be string, array given
我在config / database.php中的配置如下:
'redis' => [
'cluster' => false,
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
'read_write_timeout' => 0
],
],
寻求帮助 感谢
答案 0 :(得分:0)
Redis ::连接&订阅不适用于Laravel 5.2。
您可以使用以下命令:
Redis::subscribe(['user_online_offline'], function ($message) {
echo $message;
});
如果要使用其他连接,则可以使用以下命令:
Redis::subscribe(['user_online_offline'], function ($message) {
echo $message;
}, $connection = 'socket');