精华
我的数据库(SQL Server)中有一个表和一个与 DB 通信以影响它的 WCF 服务。我的服务器上还有一个 PHP 脚本。现在,每当我的表添加、修改或删除了一些数据时,我希望我的 PHP 脚本能够自动执行。
其应用
我正在开发一个几乎完成的移动应用程序。现在我需要实现一个推送通知功能。即,每当数据库发生更改时,我都必须运行配置为向用户推送通知的服务器端脚本。
精华
我的数据库(SQL Server)中有一个表和一个与 DB 通信以影响它的 WCF 服务。我的服务器上还有一个 PHP 脚本。现在,每当我的表添加、修改或删除了一些数据时,我希望我的 PHP 脚本能够自动执行。
其应用
我正在开发一个几乎完成的移动应用程序。现在我需要实现一个推送通知功能。即,每当数据库发生更改时,我都必须运行配置为向用户推送通知的服务器端脚本。
推送服务应该在将数据添加到数据库的层中实现。数据库仅用于存储信息而不用于执行代码。因此,为了创建推送通知,您需要一个接口来接收更新,将其发送到数据库并将其推送给用户。
看到您的问题,我当然不希望您允许您的应用程序直接将信息添加到数据库中,而无需验证传入信息的某些层。这是直接的安全风险。
模型的解决方案是:
应用程序 -> 发送信息 -> 网站 -> 分析 PHP/其他代码语言的请求 -> 插入数据库 -> 向客户端推送消息。
您没有说您使用的是什么 RDBMS,但无论它是什么,您都需要阅读有关“触发器”的文档。这应该给你所有你需要知道的。
大多数情况下,这是使用 cron(或其他调度程序)以特定时间间隔(例如每分钟)检查数据库以查找新工作然后处理它来完成的。
然而,这种设计只能让你到目前为止,下一阶段将是使用消息队列(如 gearman、ZeroMQ 等)。
您可能可以使用触发器使某些东西起作用,但通常不应将数据库视为队列。