예제 #1
0
require_once __DIR__ . '/WorkerClient/Autoloader.php';
use WorkerClient\Worker;
$redis_password = '';
// Create a Worker Process Manager server
$worker = new Worker("redis://127.0.0.1:6379");
// number of worker processes (master process excluded)
$worker->count = 10;
$channel = pathinfo($argv[0])['filename'];
$onMessage = function ($connection, $data) {
    if (!is_null($data)) {
        //do something
        file_put_contents('test.txt', $data . "\n", FILE_APPEND);
    } else {
        echo "brPop timeout, retry...\n";
    }
    if (Worker::getStatus() == Worker::STATUS_RUNNING) {
        global $channel;
        $connection->send("brPop {$channel} 3\n", true);
        #timeout = 3 seconds
    } else {
        $connection->close();
    }
};
$onLogin = function ($connection, $login) {
    if ($login !== true) {
        echo "auth failed\n";
        $connection->close();
        return;
    }
    echo "auth ok\n";
    global $onMessage;