1

我正在尝试建立一个事件队列。我希望能够将记录添加到我的数据库中的事件队列表中,然后有一个单独的脚本通过并执行事件。

有没有办法让“Executer”脚本坐在那里等到它收到事件已添加到表中的信号?显然,我不能随机查询数据库,因为那样会非常浪费。

我知道这是一个广泛的问题,所以不要求牵手,只是在正确的方向上指出一点。

4

2 回答 2

1

如果您的数据库有任何解决此问题的方法,那么它将是特定于数据库的。例如,在 PostgreSQL 中,您可以使用LISTEN/ NOTIFY

您还可以使用其他东西来通知执行器唤醒,从简单的系统信号($SIG{...}各种)到 UDP 数据包,再到完整的作业队列和通知系统。

但实际上,我怀疑你需要担心这个。您是否真的计算过检查工作的琐碎选择需要多长时间?可能在单毫秒范围内。如果每隔几秒轮询一次数据库,性能影响可以忽略不计。

于 2013-01-04T19:58:10.200 回答
0

一些 DBMS 支持这一点。作为 MySQL 中的示例,您可以使用 UDF 并从触发器执行外部程序。您使用的是什么 DBMS?

于 2013-01-04T22:53:32.707 回答