我正在爲我的網站編寫一個API,以及一個相當大的類來處理所有的API請求。做未使用的mysql連接會減慢腳本嗎?
大部分頁面(如果不是全部)網站上的所有頁面都會在加載時向api發送至少一個請求。這個網站最重要的優先事項是效率和結果,非常快速的服務器處理。
因此,當涉及到類和某些PHP函數時,我會尋求一些建議。
首先,它看起來像我正在寫的類可能最終將成爲大約3000行代碼。如果這是在每個頁面上初始化的,忽略這樣一個事實,即每個頁面只能使用一個或兩個類中的函數,這會使API變得更慢嗎?我是否應該爲每個類方法查看帶有擴展類的單獨文件?其次,我目前擁有與目錄中單獨文件中各種數據庫的所有連接。在每個連接中都有函數mysql_pconnect()。目前,我只需要這些文件。所以如果方法需要連接到x數據庫,那麼我只需將require(connection ...)放入方法中即可。在一個類中包含文件不好嗎?
我在問,因爲唯一的其他解決方案是要求頁面頂部的所有連接,以便類可以訪問它們而不需要每種方法。這就是爲什麼我想知道是否一次連接多個連接,即使它們沒有被使用,也是在服務器上徵稅?
所以三個問題真的:
- 是否即使正在使用在每一頁減慢腳本運行時,年初啓動的一大類只有一個類的方法?這就是爲什麼人們使用'class extends class'嗎?
- 在一個類中'require()'文件不好嗎?
- 未使用的連接到mysql數據庫會減慢腳本的運行時間嗎?
謝謝你的回覆。我不太明白無意之間的僵局是什麼意思。你能否爲我解釋一些細節? – 2012-01-17 19:51:09
好的。某些腳本執行,啓動事務,建立一些鎖,然後由於任何原因而中止。如果它使用到數據庫的持久連接,那麼即使腳本已經死亡,該連接也會保持活動狀態。稍後,一些其他腳本被分配該連接,啓動它自己的數據庫操作,啓動事務,獲取鎖等等。因爲這個新腳本不知道以前發生了什麼,所以很容易開始請求鎖(明確地或以其他方式)被舊的死亡腳本的操作覆蓋,現在你被卡住了。 – 2012-01-17 21:34:06
好吧,我正準備重寫我的class.mysql.php文件,這個文件實際上是一個sql函數庫,可以更快地執行查詢。你會建議我在這個班級內執行什麼來防止死鎖?試着抓..?儘管如果失敗的話,它不會再嘗試。你對上述其他問題有任何想法嗎? – 2012-01-17 22:01:36