Created by: maxsky
Add some Redis driver function return value, fixed a problem with later() always return null. Change push/later return value. Add a remove() method (Only Redis), users can actively delete a job.
添加了 Redis 驱动下一些方法的返回值,修复了 later()
方法一直返回 null
的问题。修改了 push/later
的返回值为如下:(push 返回 Json 字符串,later 返回 score 值)
// push
$ret = Queue::push('Test', ['order_id' => 123, 'add_time' => 0]);
echo("创建 push 任务返回值:$ret<br>");
// return
创建 push 任务返回值:{"job":"Test","data":{"order_id":123,"add_time":0},"id":"F2KStxUdH7J0Z44h4aY3rjYp2rkiwmEc","attempts":1}
// later
$ret = Queue::later(30, 'Test', ['order_id' => 123, 'add_time' => 0]);
echo("创建 later 任务返回值:$ret<br>");
// return
创建 later 任务返回值:1527937178
另添加了 remove()
方法(仅用于 Redis),用于可以主动删除一个任务
// remove push
$ret = Queue::remove('{"job":"Test","data":{"order_id":123,"add_time":0},"id":"F2KStxUdH7J0Z44h4aY3rjYp2rkiwmEc","attempts":1}');
echo("删除 push 任务返回值:$ret<br>");
// return,返回成功操作行数
删除 push 任务返回值:1
// remove later
$ret = Queue::remove('1527937178', 'later');
echo("删除 later 任务返回值:$ret<br>");
// return,返回成功操作行数
删除 later 任务返回值:1
生产者控制器中示例代码如下:
public function create() {
$ret = Queue::push('Test', ['order_id' => 123, 'add_time' => 0]);
echo("创建 push 任务返回值:$ret<br>");
if ($ret !== false) {
echo 'push 任务创建成功!<br>';
} else {
echo 'push 任务创建失败!<br>';
}
$ret = Queue::later(30, 'Test', ['order_id' => 123, 'add_time' => 0]);
echo("创建 later 任务返回值:$ret<br>");
if ($ret !== false) {
echo 'later 任务创建成功!<br>';
} else {
echo 'later 任务创建失败!<br>';
}
}
public function delete() {
$ret = Queue::remove('{"job":"Test","data":{"order_id":123,"add_time":0},"id":"F2KStxUdH7J0Z44h4aY3rjYp2rkiwmEc","attempts":1}');
echo("删除 push 任务返回值:$ret<br>");
if ($ret) {
echo 'push 任务删除成功<br>';
} else {
echo 'push 任务删除失败<br>';
}
$ret = Queue::remove('1527937178', 'later');
echo("删除 later 任务返回值:$ret<br>");
if ($ret) {
echo 'later 任务删除成功<br>';
} else {
echo 'later 任务删除失败<br>';
}
}
结果截图: