我正在尝试建立一个事件队列。我希望能够将记录添加到我的数据库中的事件队列表中,然后有一个单独的脚本通过并执行事件。
有没有办法让“Executer”脚本坐在那里等到它收到事件已添加到表中的信号?显然,我不能随机查询数据库,因为那样会非常浪费。
我知道这是一个广泛的问题,所以不要求牵手,只是在正确的方向上指出一点。
我正在尝试建立一个事件队列。我希望能够将记录添加到我的数据库中的事件队列表中,然后有一个单独的脚本通过并执行事件。
有没有办法让“Executer”脚本坐在那里等到它收到事件已添加到表中的信号?显然,我不能随机查询数据库,因为那样会非常浪费。
我知道这是一个广泛的问题,所以不要求牵手,只是在正确的方向上指出一点。
如果您的数据库有任何解决此问题的方法,那么它将是特定于数据库的。例如,在 PostgreSQL 中,您可以使用LISTEN
/ NOTIFY
。
您还可以使用其他东西来通知执行器唤醒,从简单的系统信号($SIG{...}
各种)到 UDP 数据包,再到完整的作业队列和通知系统。
但实际上,我怀疑你需要担心这个。您是否真的计算过检查工作的琐碎选择需要多长时间?可能在单毫秒范围内。如果每隔几秒轮询一次数据库,性能影响可以忽略不计。
一些 DBMS 支持这一点。作为 MySQL 中的示例,您可以使用 UDF 并从触发器执行外部程序。您使用的是什么 DBMS?