最近自己寫的網站資料量開始多了,於是隔幾天會自己手動在 PHPMyAdmin 備份 DB 的資料,但是幾天這樣下來,實在覺得好麻煩阿...還是寫支程式讓它自動化好了!可是 Google 到的資料大部分都是執行在 Linux 上的...(有點後悔用 Windows 架 server),所以過程非常艱辛...總共花費了我整整兩天的時間,以下就附上我的整理及研究成果吧!
在這裡主要用到的是 PHP 的執行外部指令的涵式語法 exec,而需要特別注意的幾個點有:
- 由於 windows 路徑是 '\' 所以記得要多加一個,變成 '\\' 才不會有問題
- 注意路徑中如果某個目錄含有空白字元要做特殊的處理
- 如果沒有設定 MySql 的 class path 的話下指令就到它的目錄底下去執行 mysqldump
- 要先創好備份資料所要儲存的路徑
那麼以下就附上程式碼:
- $oldDir = getcwd();
- chdir("C:\\EasyPHP-DevServer-13.1VC11\\binaries\\mysql\\bin"); // mysql bin的路徑
- exec("mysqldump --opt -uUser -pPassword dbName >D:\\backup\\%date:~0,4%%date:~5,2%%date:~8,2%.sql");
- chdir($oldDir);
如此一來執行這個 php 檔時,便可備份 db 到指定的目錄了!而如果你發現指定目錄建的 db 檔始終是 0kb (如果不是沒資料)的話,通常都是前面的路徑設錯了(我自己主要就是在這裡卡了很久),接著網頁端寫好了就是如何讓它自動執行了!
主要就是寫支批次檔(.bat)的程式然後加入工作排程,如此便能自動在指定的時間來備份我們的 DB 了。在這裡由於我對指令或是發 request 的概念不是很熟,所以用了很笨的方法寫了兩支 bat 檔,一支用來用 ie 去執行我們剛剛寫好的網頁,但由於這樣電腦就會開啟 ie 所以要靠另一支 bat 檔來把 ie 關掉...如果大家有什麼更好的辦法請提供讓我知道喔!以下就附上程式碼:
一.用 ie 執行網頁
- cd C:\Program Files\Internet Explorer // ie 的路徑
- iexplore.exe "http://www.google.com"
二.關掉 ie
- taskkill /IM iexplore.exe // 殺掉 ie 的程序
好啦~到此結束!希望有幫到大家唷!
沒有留言:
張貼留言