專利名稱:一種云環(huán)境下的php代碼調(diào)試方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及云開發(fā)技術(shù)領(lǐng)域,特別涉及一種云環(huán)境下的PHP代碼調(diào)試方法及系 統(tǒng)。
背景技術(shù):
PHP語言(Hypertext Preprocessor,超文本預處理)語言是最受歡迎的Web開發(fā) 語言之一。PHP可以簡單輕松地支持高強度Web訪問,以學習簡單、開發(fā)快速、性能穩(wěn)定而倍 受Web開發(fā)人員的青睞。PHP還是一種服務(wù)器端技術(shù),PHP語言在服務(wù)器端執(zhí)行,表現(xiàn)為程 序員可閱讀的HTML語言,不需編譯過程,人們就可閱讀;即其源代碼不需進行二進制編譯, 可直接進入機器為機器所識別(而不需派生為二進制的機器識別碼)。而在客戶端中,瀏覽 器直接可以識別。因此PHP語言在云開發(fā)平臺上的應(yīng)用程序中廣泛普及。在云開發(fā)平臺上 為PHP代碼提供高效的調(diào)試方案,對于開發(fā)人員的工作將大有幫助。但是在調(diào)試中,由于刪 除調(diào)試數(shù)據(jù)是異步操作,所以刪除全部調(diào)試數(shù)據(jù)時可能會有延遲,即在調(diào)試數(shù)據(jù)數(shù)量很大 時全部刪除后依然會顯示部分數(shù)據(jù)但是已全部刪除成功。發(fā)明內(nèi)容
本發(fā)明旨在至少在一定程度上解決上述技術(shù)問題之一或至少提供一種有用的商 業(yè)選擇。
為此,本發(fā)明的第一個目的在于提出一種云環(huán)境下的超文本預處理語言PHP代碼 調(diào)試方法,以解決調(diào)試數(shù)據(jù)的存儲、區(qū)分應(yīng)用程序的調(diào)試數(shù)據(jù)以及生成圖像限額的技術(shù)問 題。本發(fā)明的第二個目的在于提出一種云環(huán)境下的PHP代碼調(diào)試系統(tǒng)。
為達到上述目的,本發(fā)明第一方面的實施例提出了一種云環(huán)境下的超文本預處理 語言PHP代碼調(diào)試方法,包括以下步驟應(yīng)用程序通過代碼中的PHP擴展調(diào)用Xhprof工具; 所述Xhprof工具獲得所述應(yīng)用程序的環(huán)境變量;所述Xhprof工具讀取調(diào)試開關(guān)并判斷所 述調(diào)試開關(guān)是否開啟;如果所述調(diào)試開關(guān)開啟,所述Xhprof工具啟動調(diào)試,生成調(diào)試數(shù)據(jù), 并將所述調(diào)試數(shù)據(jù)存儲至所述云端服務(wù)器對應(yīng)的Bucket中;所述云端服務(wù)器根據(jù)所述調(diào) 試數(shù)據(jù)生成調(diào)試結(jié)果,并將所述調(diào)試結(jié)果返回到所述客戶端,通過所述客戶端向用戶展示 所述調(diào)試結(jié)果。
根據(jù)本發(fā)明實施例的云環(huán)境下的超文本預處理語言PHP代碼調(diào)試方法,通過移植 開源項目的Xhprof部署在云平臺上,可以對運行在云環(huán)境上的php代碼進行性能的調(diào)試優(yōu) 化,調(diào)試人員可以通過調(diào)試優(yōu)化工具找到應(yīng)用程序代碼的性能瓶頸,改善代碼質(zhì)量。解決了 調(diào)試數(shù)據(jù)的存儲和區(qū)分應(yīng)用程序的調(diào)試數(shù)據(jù)以及生成圖像限額的技術(shù)問題。
在本發(fā)明的一個實施例中,所述調(diào)試開關(guān)包括Bucket名和對應(yīng)的時間字串。
在本發(fā)明的一個實施例中,所述Xhprof工具讀取調(diào)試開關(guān)并判斷所述調(diào)試開關(guān) 是否開啟,還進一步包括所述Xhprof工具判斷所述調(diào)試開關(guān)中的時間子串是否超過當前 系統(tǒng)時間;如果所述Xhprof工具判斷大于當前系統(tǒng)時間,則判斷所述調(diào)試開關(guān)失效;如果所述Xhprof工具判斷小于等于當前系統(tǒng)時間,則啟動所述調(diào)試。
在本發(fā)明的一個實施例中,所述的云環(huán)境下的PHP代碼調(diào)試方法,還包括生成所 述調(diào)試數(shù)據(jù)的標識信息,所述標識信息用于區(qū)分所述調(diào)試數(shù)據(jù)。
在本發(fā)明的一個實施例中,所述調(diào)試結(jié)果包括所述調(diào)試數(shù)據(jù),以及所述調(diào)試數(shù)據(jù) 相對應(yīng)的標識信息、報表和/或圖像。
在本發(fā)明的一個實施例中,所述標識信息包括主域名、版本號和時間戳中的一種 或多種。
本發(fā)明第二方面的實施例提出了一種云環(huán)境下的PHP代碼調(diào)試系統(tǒng),包括
云端服務(wù)器,所述云端服務(wù)器中運行有Xhprof工具,其中,所述Xhprof工具由應(yīng) 用程序通過代碼中的PHP代碼調(diào)用,用于獲得所述應(yīng)用程序的環(huán)境變量,讀取調(diào)試開關(guān)并 判斷所述調(diào)試開關(guān)是否開啟,以及在所述調(diào)試開關(guān)開啟時啟動調(diào)試生成調(diào)試數(shù)據(jù),所述云 端服務(wù)器用于存儲所述Xphrof生成的調(diào)試數(shù)據(jù),并根據(jù)所述調(diào)試數(shù)據(jù)生成調(diào)試結(jié)果,并將 所述調(diào)試結(jié)果返回到所述客戶端;所述客戶端,用于上傳所述應(yīng)用程序的PHP代碼,以及將 所述調(diào)試結(jié)果向用戶顯示。。
根據(jù)本發(fā)明實施例的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),通過移植開源項目的Xhprof 部署在云平臺上,可以對運行在云環(huán)境上的Php代碼進行性能的調(diào)試優(yōu)化,調(diào)試人員可以 通過調(diào)試優(yōu)化工具找到應(yīng)用程序代碼的性能瓶頸,改善代碼質(zhì)量。解決了調(diào)試數(shù)據(jù)的存儲 和區(qū)分應(yīng)用程序的調(diào)試數(shù)據(jù)以及生成圖像限額的技術(shù)問題。
在本發(fā)明的一個實施例中,所述調(diào)試開關(guān)包括Bucket名和對應(yīng)的時間子串。
在本發(fā)明的一個實施例中,所述Xhprof工具還用于判斷所述調(diào)試開關(guān)中的時間 子串是否大于當前系統(tǒng)時間,并在判斷大于當前系統(tǒng)時間時判斷所述調(diào)試開關(guān)失效,以及 在判斷小于等于當前系統(tǒng)時間時啟動所述調(diào)試。
在本發(fā)明的一個實施例中,所述Xhprof工具還用于生成所述調(diào)試數(shù)據(jù)的標識信 息,所述標識信息用于區(qū)分所述調(diào)試數(shù)據(jù)。
在本發(fā)明的一個實施例中,所述調(diào)試結(jié)果包括所述調(diào)試數(shù)據(jù),以及所述調(diào)試數(shù)據(jù) 相對應(yīng)的標識信息、報表和/或圖像。
在本發(fā)明的一個實施例中,所述標識信息包括主域名、版本號和時間戳中的一種 或多種。
本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過本發(fā)明的實踐了解到。
本發(fā)明的上述和/或附加的方面和優(yōu)點從結(jié)合下面附圖對實施例的描述中將變 得明顯和容易理解,其中
圖1為本發(fā)明一個實施例的云環(huán)境下的PHP代碼調(diào)試方法的流程圖2為本發(fā)明一個實施例的調(diào)試數(shù)據(jù)生成及訪問過程的示意圖;以及
圖3為本發(fā)明一個實施例的云環(huán)境下的PHP代碼調(diào)試系統(tǒng)的示意圖。
具體實施方式
下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終 相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附 圖描述的實施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
在本發(fā)明中,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”、“固定”等 術(shù)語應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機 械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元 件內(nèi)部的連通。對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語在本發(fā) 明中的具體含義。此外,在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以 上。
下面分別參考圖1至圖2對本發(fā)明實施例的云環(huán)境下的超文本預處理語言PHP代 碼調(diào)試方法的流程進行描述。
如圖1所示,根據(jù)本發(fā)明第一方面的實施例的云環(huán)境下的超文本預處理語言PHP 代碼調(diào)試方法,包括以下步驟
SlOl :應(yīng)用程序通過代碼中的PHP擴展調(diào)用云端服務(wù)器中的Xhprof工具。
在本發(fā)明中,對Xhprof工具的擴展及內(nèi)部實現(xiàn)邏輯加以修改,使得應(yīng)用程序可以 通過代碼中的PHP擴展調(diào)用Xhprof工具。Xhprof是一個開源的分層PHP性能分析工具,它 報告函數(shù)級別的請求次數(shù)和各種指標,包括阻塞時間,CPU時間和內(nèi)存使用情況。
在具體實施例中,Xhprof工具的PHP擴展可以以函數(shù)的形式實現(xiàn),例如 baexhprof_start O設(shè)置為程序代碼中調(diào)試開始處,baexhprof_end()設(shè)置為程序代碼中 調(diào)試結(jié)束處,當程序代碼運行到設(shè)置好的區(qū)間時,即調(diào)用云端服務(wù)器中的Xphrof工具。
S102 =Xhprof工具獲得應(yīng)用程序的環(huán)境變量。
S103 =Xhprof工具讀取調(diào)試開關(guān)并判斷調(diào)試開關(guān)是否開啟。
在本發(fā)明的一個實施例中,調(diào)試開關(guān)是由云服務(wù)平臺生成并注入到應(yīng)用程序的環(huán) 境變量中的,用戶可以根據(jù)具體需要,對調(diào)試開關(guān)中的時間字串進行修改。因此調(diào)試開關(guān)的 設(shè)計應(yīng)遵循以下規(guī)則例如,環(huán)境變量為HTTP_BAE_ENV_XHPROF_SWITCH,則調(diào)試開關(guān)的鍵 名為BAE_ENV_XHPROF_SWITCH,鍵值為Bucket名和版本對應(yīng)的時間字串,表示調(diào)試數(shù)據(jù)存 儲的Bucket (桶,一種用于存放用戶數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型)名稱和各版本調(diào)試功能過期時 間。調(diào)試時,Xhprof工具判斷調(diào)試開關(guān)中的時間字串是否大于當前系統(tǒng)時間,若大于當前 系統(tǒng)時間,則調(diào)試開關(guān)失效。若小于等于當前系統(tǒng)時間,則啟動調(diào)試。例如,用戶想進行一 個小時的調(diào)試,則可以通過設(shè)置調(diào)試開關(guān)中的時間字串為當前系統(tǒng)時間上加上3600秒來 啟用調(diào)試開關(guān),則可實現(xiàn)開啟時長為一小時的調(diào)試。
S104 :如果調(diào)試開關(guān)開啟,Xhprof工具啟動調(diào)試,生成調(diào)試數(shù)據(jù),并將調(diào)試數(shù)據(jù)存 儲至云端服務(wù)器對應(yīng)的Bucket中。
調(diào)試數(shù)據(jù)存儲于云服務(wù)器存儲空間上的Bucket中,在調(diào)試開始前,由用戶對存儲 本次調(diào)試數(shù)據(jù)的Bucket進行設(shè)置。由于云存儲的所有Bucket不能重名,因此通過數(shù)據(jù)庫 存儲用戶各應(yīng)用設(shè)置的存儲調(diào)試數(shù)據(jù)的Bucket,并將此Bucket信息和版本開關(guān)信息注入 應(yīng)用程序的環(huán)境變量中。改造Xhprof的底層擴展,獲取被調(diào)試應(yīng)用程序的環(huán)境變量,確定 對應(yīng)用程序的哪個版本進行調(diào)試,并將調(diào)試數(shù)據(jù)存入Bucket中。因此需要根據(jù)各應(yīng)用程序 的環(huán)境變量AK (Api Key)、SK (Secret Key,與前述AK結(jié)合,作為使用云平臺服務(wù)的驗證密鑰)來連接云存儲,將請求產(chǎn)生的調(diào)試數(shù)據(jù)上傳到設(shè)定好的Bucket中,并由Xphrof工具 生成調(diào)試數(shù)據(jù)的標識信息,標識信息用于區(qū)分調(diào)試數(shù)據(jù)。標識信息包括主域名、版本號和時 間戳中的一種或多種。在本發(fā)明的一個實施例中,標識信息為調(diào)試數(shù)據(jù)的文件名,命名格式 為主域名+版本號+時間戳。向用戶展示調(diào)試數(shù)據(jù)的時候,可根據(jù)主域名區(qū)分不同應(yīng)用程 序,根據(jù)版本號區(qū)分應(yīng)用程序的不同版本,根據(jù)時間可以知道該調(diào)試進行的時間,進而區(qū)分 該調(diào)試數(shù)據(jù)是否為最新產(chǎn)生的調(diào)試數(shù)據(jù)。此外,在設(shè)置Bucket時,可加入表示限額的字段, 針對用戶使用云平臺服務(wù)的權(quán)限進行設(shè)置。例如,該字段可表示該用戶當天O點之后共請 求了幾次圖像生成服務(wù)。如果超過100詞則給出“今天限額已到,不能繼續(xù)生成”的出錯提 示。加入此字段可對用戶的使用權(quán)限進行限制,防止對云端服務(wù)器資源的浪費。
S105:云端服務(wù)器根據(jù)調(diào)試數(shù)據(jù)生成調(diào)試結(jié)果,并將調(diào)試結(jié)果返回到客戶端,通過 客戶端向用戶展示調(diào)試結(jié)果。
在本發(fā)明的一個實施例中,調(diào)試結(jié)果包括調(diào)試數(shù)據(jù),以及調(diào)試數(shù)據(jù)相對應(yīng)的標識 信息、報表和/或圖像。具體實施中,調(diào)試結(jié)果中的各部分可以根據(jù)具體情況分批先后生成 并向用戶展示。例如,調(diào)試完成后,調(diào)試數(shù)據(jù)以列表的形式儲存在用戶預設(shè)的Bucket中,每 一條調(diào)試數(shù)據(jù)包括調(diào)試期間執(zhí)行代碼的運行耗時,CPU占用,內(nèi)存占用,函數(shù)調(diào)用頻率及 性能等指標,并附加調(diào)試數(shù)據(jù)的標識信息。云端服務(wù)器將調(diào)試數(shù)據(jù)的列表返回客戶端,并通 過客戶端向用戶展示。用戶可在調(diào)試數(shù)據(jù)列表中一項或者多項調(diào)試數(shù)據(jù)進行報表和/或圖 像的查看,此時Xphrof工具根據(jù)調(diào)試數(shù)據(jù)生成用戶需要的報表和/或圖像,并通過客戶端 向用戶展示。展示調(diào)試數(shù)據(jù)生成出的報表和圖像時,通過AK、SK和bucket名稱獲取各應(yīng)用 程序的調(diào)試結(jié)果展示給用戶,展示時,調(diào)試結(jié)果通過表格或圖像等方式呈現(xiàn)。用戶可以通過 客戶端查看調(diào)試結(jié)果,包括調(diào)試數(shù)據(jù)相對應(yīng)的標識信息、數(shù)據(jù)列表和圖像等。用戶可以比較 兩次相同調(diào)試之間的性能變化點,根據(jù)每一項數(shù)據(jù)信息來得知程序的瓶頸具體在程序的什 么環(huán)節(jié)或者哪個部分,以方便用戶優(yōu)化自己的代碼。需要說明的是,以上示例只是為了便于 說明,而不應(yīng)理解為對本發(fā)明的限制。本發(fā)明中,因為用戶要調(diào)試的應(yīng)用程序是運行在云平 臺上,也可以從一定程度上節(jié)省云環(huán)境的系統(tǒng)資源。
如圖2所示,在本發(fā)明的一個實施例中,調(diào)試數(shù)據(jù)生成,并存儲入云服務(wù)器端存儲 后,可通過云環(huán)境下提供的前端接口獲取調(diào)試數(shù)據(jù),并運行圖像生成工具后,再前端顯示給 用戶。
根據(jù)本發(fā)明實施例的云環(huán)境下的超文本預處理語言PHP代碼調(diào)試方法,通過移植 開源項目的Xhprof部署在云平臺上,可以對運行在云環(huán)境上的php代碼進行性能的調(diào)試優(yōu) 化,調(diào)試人員可以通過調(diào)試優(yōu)化工具找到應(yīng)用程序代碼的性能瓶頸,改善代碼質(zhì)量。解決了 調(diào)試數(shù)據(jù)的存儲和區(qū)分應(yīng)用程序的調(diào)試數(shù)據(jù)以及生成圖像限額的技術(shù)問題。
為了實現(xiàn)上述實施例,本發(fā)明還提出一種云環(huán)境下的PHP代碼調(diào)試系統(tǒng)。
如圖3所示,根據(jù)本發(fā)明第二方面的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),包括云端服 務(wù)器310和客戶端320。
具體地,云端服務(wù)器310中運行有Xhprof工具,應(yīng)用程序通過代碼中的PHP擴展 調(diào)用Xhprof工具,Xhprof工具獲得應(yīng)用程序的環(huán)境變量,讀取調(diào)試開關(guān)并判斷調(diào)試開關(guān)是 否開啟,并在調(diào)試開關(guān)開啟時啟動調(diào)試生成調(diào)試數(shù)據(jù)。生成后,將調(diào)試數(shù)據(jù)存儲至云端服務(wù) 器310對應(yīng)的Bucket。云端服務(wù)器310根據(jù)調(diào)試數(shù)據(jù)生成調(diào)試結(jié)果,并將調(diào)試結(jié)果返回到客戶端320。
調(diào)試開關(guān)是由云服務(wù)平臺生成并注入到應(yīng)用的環(huán)境變量中的,用戶可以根據(jù)具體 需要,對調(diào)試開關(guān)中的時間字串進行修改。因此調(diào)試開關(guān)的設(shè)計應(yīng)遵循以下規(guī)則例如,環(huán) 境變量為 HTTP_BAE_ENV_XHPROF_SWITCH,則調(diào)試開關(guān)的鍵名為 BAE_ENV_XHPROF_SWITCH, 鍵值為Bucket名和版本對應(yīng)的時間字串,表示調(diào)試數(shù)據(jù)存儲的Bucket名稱和各版本調(diào)試 功能過期時間。
客戶端320用于上傳應(yīng)用程序的PHP代碼以及將調(diào)試結(jié)果向用戶顯示。
在本發(fā)明的一個實施例中,Xhprof工具還用于生成調(diào)試數(shù)據(jù)的標識信息。由于 云存儲的所有Bucket不能重名,因此通過數(shù)據(jù)庫存儲用戶各應(yīng)用設(shè)置的存儲調(diào)試數(shù)據(jù)的 Bucket,并將此Bucket信息和版本開關(guān)信息注入應(yīng)用程序的環(huán)境變量中。改造Xhprof的 底層擴展,獲取被調(diào)試應(yīng)用程序的環(huán)境變量,確定對應(yīng)用程序的哪個版本進行調(diào)試,并將調(diào) 試數(shù)據(jù)存入Bucket中。因此需要根據(jù)各應(yīng)用程序的環(huán)境變量AK (Api Key)、SK (Secret Key,與前述AK結(jié)合,作為使用云平臺服務(wù)的驗證密鑰)來連接云存儲,將請求產(chǎn)生的調(diào)試數(shù) 據(jù)上傳到設(shè)定好的Bucket中,并由Xhprof工具生成調(diào)試數(shù)據(jù)的標識信息,標識信息用于區(qū) 分調(diào)試數(shù)據(jù),標識信息包括主域名、版本號和時間戳中的一種或多種。在本發(fā)明的一個實施 例中,標識信息為調(diào)試數(shù)據(jù)的文件名,命名格式為主域名+版本號+時間戳。向用戶展示調(diào) 試數(shù)據(jù)的時候,可根據(jù)主域名區(qū)分不同應(yīng)用程序,根據(jù)版本號區(qū)分應(yīng)用程序的不同版本,根 據(jù)時間可以知道該調(diào)試進行的時間,進而區(qū)分該調(diào)試數(shù)據(jù)是否為最新產(chǎn)生的調(diào)試數(shù)據(jù)。此 外,在設(shè)置Bucket時,可加入表示限額的字段,針對用戶使用云平臺服務(wù)的權(quán)限進行設(shè)置。 例如,該字段可表示該用戶當天O點之后共請求了幾次圖像生成服務(wù)。如果超過100詞則 給出“今天限額已到,不能繼續(xù)生成”的出錯提示。加入此字段可對用戶的使用權(quán)限進行限 制,防止對云端服務(wù)器資源的浪費。
調(diào)試時,Xhprof工具判斷調(diào)試開關(guān)中的時間字串是否大于當前系統(tǒng)時間,若大于 當前系統(tǒng)時間,則調(diào)試開關(guān)失效。若小于等于當前系統(tǒng)時間,則啟動調(diào)試。例如,啟用調(diào)試 開關(guān)時,設(shè)置調(diào)試開關(guān)中的時間字串為當前系統(tǒng)時間上加上3600秒,則可實現(xiàn)開啟時長為 一小時的調(diào)試。
調(diào)試完成后,生成調(diào)試結(jié)果,包括調(diào)試期間執(zhí)行代碼的運行耗時,CPU占用,內(nèi) 存占用,函數(shù)調(diào)用頻率及性能等指標。展示調(diào)試數(shù)據(jù)生出的報表和圖像時,通過AK、SK和 bucket名稱獲取各應(yīng)用程序的調(diào)試結(jié)果展示給用戶,展示時,調(diào)試結(jié)果通過表格或圖像等 方式呈現(xiàn)。用戶可以通過客戶端320查看調(diào)試結(jié)果,包括調(diào)試數(shù)據(jù)相對應(yīng)的標識信息、報表 和/或圖像等。并可以比較兩次相同調(diào)試之間的性能變化點,以方便用戶優(yōu)化自己的代碼。 本發(fā)明中,因為用戶要調(diào)試的應(yīng)用程序是運行在云平臺上,也可以從一定程度上節(jié)省云環(huán) 境的系統(tǒng)資源。
如圖2所示,在本發(fā)明的一個實施例中,調(diào)試數(shù)據(jù)生成,并存儲入云服務(wù)器端存儲后, 可通過云環(huán)境下提供的前端接口獲取調(diào)試數(shù)據(jù),并運行圖像生成工具后,再前端顯示給用戶。
根據(jù)本發(fā)明實施例的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),通過移植開源項目的Xhprof 部署在云平臺上,可以對運行在云環(huán)境上的Php代碼進行性能的調(diào)試優(yōu)化,調(diào)試人員可以 通過調(diào)試優(yōu)化工具找到應(yīng)用程序代碼的性能瓶頸,改善代碼質(zhì)量。解決了調(diào)試數(shù)據(jù)的存儲 和區(qū)分應(yīng)用程序的調(diào)試數(shù)據(jù)以及生成圖像限額的技術(shù)問題。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括 一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部 分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順 序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明 的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是 用于實現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實現(xiàn)在任何計算機可讀介質(zhì)中,以 供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計算機的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令 執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或 設(shè)備而使用。就本說明書而言,"計算機可讀介質(zhì)"可以是任何可以包含、存儲、通信、傳播 或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用 的裝置。計算機可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下具有一個或多個布線 的電連接部(電子裝置),便攜式計算機盤盒(磁裝置),隨機存取存儲器(RAM),只讀存儲器 (R0M),可擦除可編輯只讀存儲器(EPR0M或閃速存儲器),光纖裝置,以及便攜式光盤只讀存 儲器(⑶ROM)。另外,計算機可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的 介質(zhì),因為可以例如通過對紙或其他介質(zhì)進行光學掃描,接著進行編輯、解譯或必要時以其 他合適方式進行處理來以電子方式獲得所述程序,然后將其存儲在計算機存儲器中。
應(yīng)當理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述 實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件 或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下 列技術(shù)中的任一項或他們的組合來實現(xiàn)具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路 的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場 可編程門陣列(FPGA)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步 驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介 質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以 是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模 塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如 果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機 可讀取存儲介質(zhì)中。
在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示 例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特 點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不 一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何 的一個或多個實施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例 性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在不脫離本發(fā)明的原理和宗旨 的情況下在本發(fā)明的范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。
權(quán)利要求
1.一種云環(huán)境下的超文本預處理語言PHP代碼調(diào)試方法,其特征在于,包括以下步驟 應(yīng)用程序通過代碼中的PHP擴展調(diào)用Xhprof工具; 所述Xhprof工具獲得所述應(yīng)用程序的環(huán)境變量; 所述Xhprof工具讀取調(diào)試開關(guān)并判斷所述調(diào)試開關(guān)是否開啟; 如果所述調(diào)試開關(guān)開啟,所述Xhprof工具啟動調(diào)試,生成調(diào)試數(shù)據(jù),并將所述調(diào)試數(shù)據(jù)存儲至所述云端服務(wù)器對應(yīng)的Bucket中;以及 所述云端服務(wù)器根據(jù)所述調(diào)試數(shù)據(jù)生成調(diào)試結(jié)果,并將所述調(diào)試結(jié)果返回到所述客戶端,通過所述客戶端向用戶展示所述調(diào)試結(jié)果。
2.如權(quán)利要求1所述的云環(huán)境下的PHP代碼調(diào)試方法,其特征在于,其中,所述調(diào)試開關(guān)包括Bucket名和對應(yīng)的時間子串。
3.如權(quán)利要求1或2所述的云環(huán)境下的PHP代碼調(diào)試方法,其特征在于,所述Xhprof工具讀取調(diào)試開關(guān)并判斷所述調(diào)試開關(guān)是否開啟,還進一步包括 所述Xhprof工具判斷所述調(diào)試開關(guān)中的時間字串是否大于當前系統(tǒng)時間; 如果所述Xhprof工具判斷大于當前系統(tǒng)時間,則判斷所述調(diào)試開關(guān)失效;以及 如果所述Xhprof工具判斷小于等于當前系統(tǒng)時間,則啟動所述調(diào)試。
4.如權(quán)利要求1-3任一項所述的云環(huán)境下的PHP代碼調(diào)試方法,其特征在于,還包括 生成所述調(diào)試數(shù)據(jù)的標識信息,所述標識信息用于區(qū)分所述調(diào)試數(shù)據(jù)。
5.如權(quán)利要求1-4任一項所述的云環(huán)境下的PHP代碼調(diào)試方法,其特征在于,所述調(diào)試結(jié)果包括 所述調(diào)試數(shù)據(jù),以及所述調(diào)試數(shù)據(jù)相對應(yīng)的標識信息、報表和/或圖像。
6.如權(quán)利要求5所述的云環(huán)境下的PHP代碼調(diào)試方法,其特征在于,所述標識信息包括主域名、版本號和時間戳中的一種或多種。
7.一種云環(huán)境下的PHP代碼調(diào)試系統(tǒng),其特征在于,包括 云端服務(wù)器,所述云端服務(wù)器中運行有Xhprof工具,其中,所述Xhprof工具由應(yīng)用程序通過代碼中的PHP代碼調(diào)用,用于獲得所述應(yīng)用程序的環(huán)境變量,讀取調(diào)試開關(guān)并判斷所述調(diào)試開關(guān)是否開啟,以及在所述調(diào)試開關(guān)開啟時啟動調(diào)試生成調(diào)試數(shù)據(jù),所述云端服務(wù)器用于存儲所述Xphrof生成的調(diào)試數(shù)據(jù),并根據(jù)所述調(diào)試數(shù)據(jù)生成調(diào)試結(jié)果,并將所述調(diào)試結(jié)果返回到所述客戶端;以及 所述客戶端,用于上傳所述應(yīng)用程序的PHP代碼,以及將所述調(diào)試結(jié)果向用戶顯示。
8.如權(quán)利要求7所述的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),其特征在于,其中,所述調(diào)試開關(guān)包括Bucket名和對應(yīng)的時間子串。
9.如權(quán)利要求8所述的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),其特征在于,所述Xhprof工具,還用于判斷所述調(diào)試開關(guān)中的時間子串是否大于當前系統(tǒng)時間,并在判斷大于當前系統(tǒng)時間時判斷所述調(diào)試開關(guān)失效,以及在判斷小于等于當前系統(tǒng)時間時啟動所述調(diào)試。
10.如權(quán)利要求7所述的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),其特征在于,所述Xhprof工具還用于生成所述調(diào)試數(shù)據(jù)的標識信息,所述標識信息用于區(qū)分所述調(diào)試數(shù)據(jù)。
11.如權(quán)利要求10所述的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),其特征在于,所述調(diào)試結(jié)果包括 所述調(diào)試數(shù)據(jù),以及所述調(diào)試數(shù)據(jù)相對應(yīng)的標識信息、報表和/或圖像。
12.如權(quán)利要求10所述的云環(huán)境下的PHP代碼調(diào)試系統(tǒng),其特征在于,所述標識信息包括主域名、版本號和時間戳中的一種或多種。
全文摘要
本發(fā)明提出了一種云環(huán)境下的PHP代碼調(diào)試方法,包括以下步驟云端服務(wù)器中的Xhprof工具獲得應(yīng)用程序的PHP代碼;Xhprof工具獲得應(yīng)用程序的PHP代碼中的環(huán)境變量;Xhprof工具根據(jù)環(huán)境變量生成調(diào)試開關(guān);Xhprof工具接收客戶端根據(jù)調(diào)試開關(guān)生成并上傳的調(diào)試數(shù)據(jù),并將調(diào)試數(shù)據(jù)存儲至云端服務(wù)器對應(yīng)的Bucket中;Xhprof工具根據(jù)上傳的調(diào)試數(shù)據(jù)對應(yīng)用程序的PHP代碼進行調(diào)試。本發(fā)明還提出了一種云環(huán)境下的PHP代碼調(diào)試系統(tǒng)。本發(fā)明通過移植開源項目的Xhprof部署在云平臺上,可以對運行在云環(huán)境上的php代碼進行性能的調(diào)試,以方便用戶優(yōu)化自己的代碼,解決了調(diào)試數(shù)據(jù)的存儲和區(qū)分應(yīng)用程序的調(diào)試數(shù)據(jù)以及生成圖像限額的技術(shù)問題。
文檔編號H04L29/08GK103049385SQ20121059025
公開日2013年4月17日 申請日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
發(fā)明者胡曉亮 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司