我想将一些耗时的东西提取到队列中。为此,我发现 Gearman 是最常用的,但不知道它是否适合我。我们要做的任务之一是排队发送电子邮件,并希望提供能够取消发送邮件 1 分钟的功能。所以它不应该立即工作,而是在现在 + 1 分钟执行它。这样我就可以在此之前取消作业并且它永远不会被发送。
有没有办法做到这一点?
它将在 debian 上运行。并且应该可以从 php 中使用。到目前为止,我发现的唯一一件事是在 Gearman 中安排一个特定日期和时间的工作,但它运行在没有广泛传播的东西上:(
我想将一些耗时的东西提取到队列中。为此,我发现 Gearman 是最常用的,但不知道它是否适合我。我们要做的任务之一是排队发送电子邮件,并希望提供能够取消发送邮件 1 分钟的功能。所以它不应该立即工作,而是在现在 + 1 分钟执行它。这样我就可以在此之前取消作业并且它永远不会被发送。
有没有办法做到这一点?
它将在 debian 上运行。并且应该可以从 php 中使用。到目前为止,我发现的唯一一件事是在 Gearman 中安排一个特定日期和时间的工作,但它运行在没有广泛传播的东西上:(
您的问题有两个部分:(1)未来的计划和(2)能够取消工作直到那个时候。
For (1)at
应该可以正常工作,正如该问题中指定的那样,这个人甚至发布了他的包装代码。你试过了吗?
如果您不想使用它,请考虑以下场景:
status
列 = 0)以及timeSent
已经通过的位置,然后发送这些电子邮件。因此,对于 (2),如果您想在发送电子邮件之前取消它,只需将其status
列更新为其他内容。
您的齿轮工人必须是一个人,因为如果您有多个,他们可能会获取并尝试发送相同的电子邮件记录。如果您需要多个,请确保获取电子邮件记录的那个首先在任何耗时的操作(例如实际发送电子邮件)之前立即将其锁定(例如,通过将该status
列更新为其他内容)。