2013-03-26 84 views
0

本質自動執行PHP腳本,只要更改數據庫

我有一個表在我的數據庫(SQL Server),並與數據庫進行通信,以影響它的WCF服務。我的服務器上也有一個PHP腳本。現在每當我的表添加,修改或刪除一些數據時,我希望我的PHP腳本自動執行。

及其應用

我對幾乎完成了一個移動應用程序的工作。現在我需要實現推送通知功能。即每當數據庫發生變化時,我必須運行配置爲向用戶推送通知的服務器端腳本。

+0

我仍然錯過了展示自己的努力和看到答案之一的答案,我將舉出這個問題。 http://stackoverflow.com/questions/15637692/execute-php-script-automatically-whenever-database-changes/15637792?noredirect=1#comment22186517_15637744 – Luceos 2013-03-26 13:12:56

+0

我設法找到一個腳本來推送通知..但現在我站無法找到我可以在數據庫更改上執行腳本的方式? – Legolas 2013-03-28 03:59:39

回答

0

你不會說你正在使用什麼RDBMS,但無論它是什麼,你都需要閱讀關於「觸發器」的文檔。這應該給你所有你需要知道的。

+0

我們使用SQLSERVER ///// 上面所說的觸發器概念的任何鏈接或例子來調用DB更新的PHP腳本? – Legolas 2013-03-26 13:03:55

+1

你就像我一樣能夠像SQLSERVER TRIGGERS一樣輸入Google! – 2013-03-26 13:06:01

+0

jus lazzyyyyyyy – Legolas 2013-03-26 13:10:55

0

推送服務應該在將數據添加到數據庫的層中實現。數據庫僅用於存儲不用於執行代碼的信息。因此,爲了創建推送通知,您需要一個接收更新的接口,將其發送到數據庫並將其推送給用戶。

看到你的問題,我當然不希望你的應用程序直接添加信息到數據庫,而沒有一些驗證傳入信息的圖層。這是一個直接的安全風險。

一個模型的一個解決辦法是:

附錄 - >發送信息 - >網站 - >分析以PHP /其他代碼語言請求 - >插入在數據庫 - >推送消息提供給客戶。

+0

yes.as我已經提到我有一個wcf服務,那是與DB通信的層..所以你說我必須在WCF中做些什麼來接收更新,然後執行php腳本? – Legolas 2013-03-26 13:07:26

+0

是的,只要你集中發送推送,你會沒事的。我認爲對數據庫進行輪詢(無理由)以獲取信息並將其發送給客戶是不明智的。 還要確保接收服務器推送,而不是發送應用程序;由於安全原因。 – Luceos 2013-03-26 13:09:25

+0

我們的WCF服務正在被兩個用戶界面使用 - 桌面和移動..因此,我無法在WCF中做任何更改...我強迫觸發執行DB腳本上的PHP腳本... – Legolas 2013-03-26 13:13:21

0

大多數情況下,這是通過使用cron(或另一個調度程序)在特定時間間隔(例如每分鐘)檢查數據庫來查找新工作並進行處理來完成的。但是,這種設計只會讓你感到目前爲止,下一個階段將是使用消息隊列(比如gearman,ZeroMQ等)。

您可能可以使用觸發器進行操作,但通常不應將數據庫視爲隊列。

+0

我完全陌生的所有這些東西「Cron」「齒輪工」「ZeroMQ」! U告訴觸發器被排除..因此,我的選擇發送通知給用戶當我的數據庫更改! – Legolas 2013-03-28 04:01:57