Ben*_*lah 9 php laravel laravel-4
我一直在Laravel 4中使用Queue系统,效果很好! - 我想知道是否有办法查看Queue中的实际内容?我正在使用redis作为后端.
Lau*_*nce 23
我花了一些时间来挖掘Queue驱动程序和API.我能找到你的答案.
Short TL; DR版本:
Queue::getList()Queue接口上没有本机(或类似)功能.
但是这将为您提供defaultRedis队列中等待处理的所有排队作业的列表:
$list = (Queue::getRedis()->command('LRANGE',['queues:default', '0', '-1']));
Run Code Online (Sandbox Code Playgroud)
default如果您运行多个队列管,请更改为其他名称.
请注意,该命令可能会导致返回一个非常大的数据集(就像转储数据库的一部分一样) - 所以您可能只想获得排队的作业数量:
$queue_length = (Queue::getRedis()->command('LLEN',['queues:default']));
Run Code Online (Sandbox Code Playgroud)
更长的版本:
Queue::getList()Queue接口上没有本机(或类似)功能.但我注意到可以从Queue界面获取Redis驱动程序:
$redis = Queue::getRedis();
Run Code Online (Sandbox Code Playgroud)
深入研究Redis驱动程序 - 我们可以看到有一个名为的函数command().这被定义为
command(string $method, array $parameters = array())
Run a command against the Redis database.
Run Code Online (Sandbox Code Playgroud)
这意味着我们现在可以通过Laravel将任何本机Redis命令运行到Redis实例上.
通过浏览该列表 - 我们有许多有用的命令可供队列使用.
首先 - 您可以查看所有KEYS可用的内容 - 如果您不确定队列的名称,这可能很有用:
$keys = Queue::getRedis()->command('KEYS',['*']);
Run Code Online (Sandbox Code Playgroud)
您还可以在运行其他操作之前确保存在特定的KEY - 如下所示:
if (Queue::getRedis()->command('EXISTS',['queues:default']))
{
// Queues:default key exists!
}
Run Code Online (Sandbox Code Playgroud)
此外 - 您可以获得队列的长度 - 这很有用
$queue_length = (Queue::getRedis()->command('LLEN',['queues:default']));
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用此获取整个队列列表
$list = (Queue::getRedis()->command('LRANGE',['queues:default1', '0', '-1']));
Run Code Online (Sandbox Code Playgroud)
如果你不想要完整列表(也许你的队列非常大) - 你可以得到它的一个子集.阅读Redis文档中的更多LRANGE.
| 归档时间: |
|
| 查看次数: |
2503 次 |
| 最近记录: |