zkillboard / redisq
基于Redis的简单队列
This package is auto-updated.
Last update: 2024-09-04 15:30:53 UTC
README
RedisQ
一个使用Redis作为后端服务的简单队列服务。您只需将代码指向 https://redisq.zkillboard.com/listen.php。然后解析您收到的JSON,并对其进行任何操作。
如果10秒内没有收到击杀邮件,您将收到一个空包裹,例如:{"package":null}
服务器将记住您的queueID长达3小时,因此代码中的暂停不会导致您错过击杀邮件。
我需要Redis才能使用此服务吗?
您不需要Redis来使用此服务,它之所以被称为RedisQ,是因为服务本身是由Redis驱动的。
我该如何识别自己?
RedisQ将使用参数queueID来识别您。此字段是必需的!示例
https://redisq.zkillboard.com/listen.php?queueID=Voltron9000
如果没有新的击杀邮件,我该如何等待少于10秒?
默认情况下,RedisQ将等待最多10秒以等待新的击杀邮件。要等待少于10秒,您可以使用ttw参数,即timeToWait。示例
https://redisq.zkillboard.com/listen.php?ttw=1
是的,您可以组合ttw和queueID参数。代码将强制执行1秒和10秒的最小和最大值。
常见问题解答
所以,这似乎很简单。我还需要做什么?
这确实非常简单。您只需将某物指向 https://redisq.zkillboard.com/listen.php,这可以是curl、file_get_contents、wget等。以下是一个使用PHP获取击杀邮件的示例
$raw = file_get_contents("https://redisq.zkillboard.com/listen.php?queueID=YourIdHere");
$json = json_decode($raw, true);
$killmail = $json['package'];
就是这样。现在您有了击杀邮件。将其放入循环中,您可以继续获取zKillboard获取的所有击杀邮件。
我可以在请求之间暂停而不错过任何击杀邮件吗?
是的,RedisQ根据您的queueID来识别您,并会在3小时内记住您。因此,您可以设置每分钟、5分钟、15分钟等运行的cron作业,而不用担心错过任何击杀邮件。
RedisQ有速率限制吗?
没有速率限制。本质上,如果没有击杀邮件要给您,RedisQ将让您等待最多10秒,然后返回一个null包裹。如果您有很多击杀邮件要给您,您可以随意快速调用RedisQ,并尽快将击杀邮件返回给您。
我可以在RedisQ上使用多个连接吗?
(此部分目前已弃用,可能是暂时性的)
一次只能允许一个连接。如果您尝试更多连接,额外的连接将收到http 429错误。过多的429错误会导致您的IP和用户id(如果提供)被临时禁止数小时。
我可以仅订阅我自己的飞行员/角色/联盟的击杀邮件吗?
目前不行。我在制作这个时选择了简单性,没有添加任何用于过滤和/或订阅的代码。您可以在您的端轻松编写代码以过滤击杀邮件到您喜欢的格式。
真的吗?为什么这样做而不是使用WebSockets或其他类似的东西?
WebSockets很棒,当然,但我想写一些在任何语言中都非常容易实现的东西。RedisQ不是试图像WebSockets那样花哨,它只是在快速、简单的方式中传播击杀邮件。
如果您真的想使用WebSocket,请使用zkill的WebSocket服务。文档可以在以下位置找到: https://github.com/zKillboard/zKillboard/wiki/Websocket
为什么叫RedisQ呢?
因为我使用Redis来实现我所尝试的功能,它是一个队列类型的服务,所以我选择了这个完全没有创意的名字RedisQ。
为什么RedisQ不使用PHP时你还使用.php扩展名?
RedisQ的初始版本使用PHP作为后端语言。然而,之后的重构现在使用NodeJS。为了保持简单并允许良好的向后兼容性,端点保留了.php扩展名。