2017-07-09 2 views
1

Ich benutze Predis und ich möchte abonnieren in PHP Kanal und warten 30 Sekunden. Wenn keine Nachrichten auf dem Kanal empfangen werden, geben Sie die Antwort von json zurück. Oder wenn Nachrichten im Kanal vorhanden sind, geben Sie auch die Antwort zurück und beenden Sie.Kann Antwort von REDIS subscribe zurückgeben?

Zum Beispiel möchte ich, dass meine Redis :: subscribe Return $ Nachricht und ich kann Antwort zurückgeben.

Ich habe einen etwas Code in Controller Laravel:

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


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

    }); 

Und warum Redis :: abonnieren $ message nicht zurück? Aber es auch Exit-Code wie folgt zurück:

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


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

}); 

Antwort

1

warten Sie noch auf Antwort? Sowieso. Sie können Ihren Code folgendermaßen ändern:

$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(); 
    } 
Verwandte Themen