public function actionRedisPushMessage() { /** * @var \Predis\Client $redis */ $redis = DXUtil::redisClient(); $user_func = function ($pubsub, $message) { $redis = DXUtil::redisClient(); DXLog::consoleLog(json_encode($message)); switch ($message->kind) { case 'subscribe': DXLog::consoleLog("subscribed to {$message->channel}"); break; case 'message': DXLog::consoleLog('received message: ' . json_encode($message)); $count = 0; while (true) { $count++; DXLog::consoleLog($count); if ($count > 10) { DXLog::consoleLog('loop end'); break; } $payload = $redis->lpop(DXKey::getKeyOfPushMessageListWorking()); DXLog::consoleLog('pop: ' . $payload); if (!$payload) { DXLog::consoleLog('loop null break'); break; } $payload = @json_decode($payload, true); DXLog::consoleLog($payload); } break; } }; $redis->pubSubLoop(['subscribe' => DXKey::getKeyOfChannelPushMessage()], $user_func); }
public function redis() { $redis = DXUtil::redisClient(); return $redis; }