2015-10-16 25 views
-1

我將描述我的願景,並告訴我是否有可能。是否有可能創建一個PHP程序來更新遠程服務器上的數據庫?

我有一個WordPress網站,我正在從頭開發的主題。我希望能夠做的是有

http://mywpsite.staging.com/ 

在我的一臺服務器是網站,在內容管理人員可以玩的小部件來構建網站的新零件的階段式的版本,並能夠推送更改到

http://mywpsite.com/ 

在另一臺服務器上沒有太多手動步驟之間。這意味着更新運行http://mywpsite.com/的MySQL數據庫,並運行http://mywpsite.staging.com/

問題是WordPress存儲絕對URL上傳的資產!在舞臺上上傳的圖像將具有像

http://mywpsite.staging.com/wp-content/uploads/2015/10/somepic.png 

存儲在數據庫中。這意味着,更新直播站點涉及

  1. 導出上演數據庫
  2. 運行的查找和替換,http://mywpsite.staging.com -----> http://mywpsite.com,那導出的數據庫
  3. 更新直播與一個我出口

可以使用PHP自動執行此過程來點擊按鈕?另外,MySQL甚至還有一個「添加或更新」的方式來更新數據庫中的表/行/列,還是必須先刪除實時數據庫,然後將其重新制作爲階段數據庫的副本?

如果我的願景是可能的,那麼PHP腳本的基本輪廓將會實現這個願景是什麼?

+0

爲什麼downvotes? –

回答

1

這絕對有可能。

一位轉發路徑(沿着你在想什麼線)包括:

- 製作具有相同的表到主您的分階段服務器上的數據庫databaseTMP上演數據庫。

- 用分階段數據填充這些表。

-Run像

UPDATE tablename SET addressfield = REPLACE(addressfield, ’staging.’, '’); 

每個在每個相關表的相關領域。

- 在登臺服務器上從databaseTPM數據庫導出相關表。將它們移動到活動服務器。

-On直播服務器,爲每個相關表格的運行像

INSERT INTO newtablename (id, columna, columnb, etc) 
SELECT (id, columna, columns, ect) from oldtablename 
ON DUPLICATE KEY UPDATE id = oldtablename.id, columna = oldtablename.columna, 
columnb = oldtablename.columnb, ect = oldtablename.etc; 

查詢另一種方法是做這一切在PHP(而不是MySQL的),這樣你就不必自動執行數據庫導出和導入過程。使用PHP從暫存服務器獲取數據,替換需要替換的內容,並使用重複鍵更新查詢上的插入將數據推送到實時服務器。在這個計劃下,你也不需要臨時數據庫。

相關問題