woojean / php-redis-queue
PHP的Redis队列
1.0.0
2018-03-05 11:28 UTC
Requires
- php: >=5.5.0
This package is not auto-updated.
Last update: 2024-09-18 10:35:43 UTC
README
PHP的Redis队列
演示
添加任务
<?php // queue config $queueName = 'myqueue'; $redisConfig = [ 'host' => '127.0.0.1', 'port' => '6379', 'index' => '0' ]; // add data $data = [ 'k1' => 'v1', 'k2' => 'v2', ]; echo "Queue name: " . $queueName . "\n"; try { // create queue $redisQueue = new RedisQueue($queueName, $redisConfig); while(True){ // add to queue $index = $redisQueue->add($data); echo "Data index: " . $index . "\n"; // index of added data sleep(1); } } catch (RedisQueueException $e) { echo $e->getMessage(); }
处理任务
<?php // queue config $queueName = 'myqueue'; $redisConfig = [ 'host' => '127.0.0.1', 'port' => '6379', 'index' => '0' ]; echo "Queue name: " . $queueName . "\n"; while (True){ try { // create queue $redisQueue = new RedisQueue($queueName, $redisConfig); // fetch from queue $data = $redisQueue->get(); echo "Fetched data:\n"; //var_dump($data); // get the index of current data echo "Current Index:"; $currentIndex = $redisQueue->getCurrentIndex($data); var_dump($currentIndex); echo $currentIndex; /* ... */ $success = True; // process result //$success = False; // process result /* ... */ sleep(2); if ($success) { // success $ret = $redisQueue->remove($data); if (!empty($ret)) { echo "\nData removed !"; } } else { // failed echo "\nRollback current data"; $redisQueue->rollback($data); // if retry times up to max, the index will be transfer to blocked list } } catch (RedisQueueException $e) { echo $e->getMessage(); } }
恢复阻塞
<?php $redisQueue = new RedisQueue($queueName, $redisConfig); $num = $redisQueue->repair();
显示队列状态
<?php // queue config $queueName = 'myqueue'; $redisConfig = [ 'host' => '127.0.0.1', 'port' => '6379', 'index' => '2' ]; $redisQueue = new RedisQueue($queueName, $redisConfig); $ret = $redisQueue->status(); var_dump($ret);
其他参数
-
$queueName
-
$redisConfig Redis连接配置。
-
$retryTimes 如果任务处理失败,并且达到重试限制,任务将被转移到阻塞任务。
-
$waitTime 如果没有更多的任务处理,'get'操作将被阻塞。