Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Redis\Connections;
4
 
5
use Closure;
6
use Illuminate\Contracts\Redis\Connection as ConnectionContract;
7
 
8
/**
9
 * @mixin \Predis\Client
10
 */
11
class PredisConnection extends Connection implements ConnectionContract
12
{
13
    /**
14
     * The Predis client.
15
     *
16
     * @var \Predis\Client
17
     */
18
    protected $client;
19
 
20
    /**
21
     * Create a new Predis connection.
22
     *
23
     * @param  \Predis\Client  $client
24
     * @return void
25
     */
26
    public function __construct($client)
27
    {
28
        $this->client = $client;
29
    }
30
 
31
    /**
32
     * Subscribe to a set of given channels for messages.
33
     *
34
     * @param  array|string  $channels
35
     * @param  \Closure  $callback
36
     * @param  string  $method
37
     * @return void
38
     */
39
    public function createSubscription($channels, Closure $callback, $method = 'subscribe')
40
    {
41
        $loop = $this->pubSubLoop();
42
 
43
        $loop->{$method}(...array_values((array) $channels));
44
 
45
        foreach ($loop as $message) {
46
            if ($message->kind === 'message' || $message->kind === 'pmessage') {
47
                $callback($message->payload, $message->channel);
48
            }
49
        }
50
 
51
        unset($loop);
52
    }
53
}