最近新建一個5.8的專案,呼叫了Redis,但是在Telescope介面重新整理了好幾次,在Redis那裡一直無資料,後來看了下原始碼,發現Telescope監聽的是Redis的CommandExecuted:
public function register($app)
{
$app['events']->listen(CommandExecuted::class, [$this, 'recordCommand']);
}
而Redis的configure函式中有進行相關判斷
protected function configure(Connection $connection, $name)
{
$connection->setName($name);
if ($this->events && $this->app->bound('events')) {
$connection->setEventDispatcher($this->app->make('events'));
}
return $connection;
}
但是Redis的$events屬性預設為false,導致Reids執行命令時無法監聽對應事件,解決思路就是修改Redis的這個$events屬性了:
$this->app['redis']->enableEvents();
本作品採用《CC 協議》,轉載必須註明作者和本文連結