/** * This program is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What The F**k You Want * To Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. * * Queues usage example * @author alxmsl * @date 7/10/14 */ include '../vendor/autoload.php'; use alxmsl\Connection\Redis\RedisFactory; use alxmsl\Primitives\QueueFactory; $Connection = RedisFactory::createRedisByConfig(array('host' => 'localhost', 'port' => 6379)); $Queue = QueueFactory::createRedisQueue('myqueue_01', $Connection); $queue = array(1, 2, 4, 5, 6, 7, 8, 5); foreach ($queue as $item) { $Queue->enqueue($item); } $result = array(); for (;;) { $item = $Queue->dequeue(); if ($item !== false) { $result[] = $item; } else { break; } } $diff = array_diff($queue, $result); var_dump(empty($diff));
* * Queue pool example * @author alxmsl * @date 8/5/14 */ include '../vendor/autoload.php'; use alxmsl\Connection\Redis\RedisFactory; use alxmsl\Primitives\QueueFactory; use alxmsl\Primitives\Queue\Pool\Pool; // Create first queue $Connection1 = RedisFactory::createRedisByConfig(array('host' => 'localhost', 'port' => 6379)); $Connection1->select(1); $Queue1 = QueueFactory::createRedisQueue('myqueue_pool_01', $Connection1); // Create second queue $Connection2 = RedisFactory::createRedisByConfig(array('host' => 'localhost', 'port' => 6379)); $Connection2->select(2); $Queue2 = QueueFactory::createRedisQueue('myqueue_pool_02', $Connection2); // Create new pool $Pool = new Pool(); $Pool->addQueue($Queue1)->addQueue($Queue2); // Write to pool $items = range(1, 5); foreach ($items as $item) { $Pool->enqueue($item); printf("enqueued: %s\n", $item); } // Flush pool while ($Item = $Pool->dequeue()) { printf("dequeued: %s\n", $Item); } var_dump($Pool->dequeue());
include '../vendor/autoload.php'; use alxmsl\Connection\Redis\RedisFactory; use alxmsl\Primitives\QueueFactory; use alxmsl\Primitives\Queue\Pool\Pool; // Create first queue $Connection1 = RedisFactory::createRedisByConfig(array('host' => 'localhost', 'port' => 6379)); $Connection1->select(1); $Queue1 = QueueFactory::createRedisQueue('myqueue_pool_01', $Connection1); // Create second queue $Connection2 = RedisFactory::createRedisByConfig(array('host' => 'localhost', 'port' => 6379)); $Connection2->select(2); $Queue2 = QueueFactory::createRedisQueue('myqueue_pool_02', $Connection2); // Create second queue $Connection3 = RedisFactory::createRedisByConfig(array('host' => 'localhost', 'port' => 6379)); $Connection3->select(2); $Queue3 = QueueFactory::createRedisQueue('myqueue_pool_03', $Connection3); // Create new pool $Pool = new Pool(); $Pool->addQueue($Queue1)->addQueue($Queue2)->addQueue($Queue3); for (;;) { $chance = mt_rand(0, 100); if ($chance < 25) { $Pool->enqueue($chance); printf("%s ->\n", $chance); } else { $item = $Pool->dequeue(); if ($item === false) { printf("...\n"); } else { printf("-> %s\n", $item); }