0, 'protocol' => 3]); // 2. Create push notifications consumer. Provides callback where current consumer subscribes to few channels before enter the loop. $push = $client->push(static function (ClientInterface $client) { $response = $client->subscribe('channel', 'control'); $status = ($response[2] === 1) ? 'OK' : 'FAILED'; echo "Channel subscription status: {$status}\n"; }); // 3. Run consumer that will handle message data type push notifications. And stops if certain message will be sent to control channel. // Send following commands via redis-cli to test: // // PUBLISH channel message1 // PUBLISH channel message2 // PUBLISH channel message3 // PUBLISH control terminate // Data types should be changed in near future. Instead of Message data type it should be one of kind data types. foreach ($push as $notification) { if ((null !== $notification) && $notification->getDataType() === PushResponseInterface::MESSAGE_DATA_TYPE) { if ($notification[1] === 'control' && $notification[2] === 'terminate') { echo "Terminating notification consumer.\n"; $push->stop(); break; } $message = $notification[2]; echo "Received message: {$message}\n"; } }