php對數組比較有經驗的過來看看【疑難】
PHP code
$arr= array();$query = $db->query("SQL語句");while($row = $db->fetch_array($query)) {$arrtmp['content']= $row['content ];。。。。$arr[] = $arrtmp;}
使用的是數組來存放查詢出來的資料,有標題有摘要等等
現在遇到的問題是這樣的,mysql資料庫連接本地,測試速度很快,但是mysql資料庫遠端連線就很慢了,skip-name-resolve加了沒有用,可以排除。
這個問題幾天了沒有解決,很是納悶,請教大俠!
------解決方案--------------------
mysql資料庫連接本地,測試速度很快,但是mysql資料庫遠端連線就很慢了
大型點的 解決方案 RAD資料庫
其他的解決方案
1.將資料庫設定在本地 定時同步資料庫資料
2.快取資料
3.將本地的伺服器託管到資料庫相同的機房
------解決方案--------------------
探討
另外附加一句,mysql遠端連線的那台伺服器到程式所在的伺服器之間的網速是很快的。
------解決方案--------------------
這是當然,主機與資料庫不在同一台伺服器上肯定要慢些,就你上面那點代碼看不出問題。除非你還有其他代碼.
------解決方案--------------------
那就是資料過大傳輸速度慢咯.考慮看看輸出壓縮結果.不過我沒處理過壓縮資料 所以看別人是否有經驗吧。
探討
問題的癥結點是儲存$arrtmp['content']= $row['content ];
這個的問題,有些大資料我注釋,速度還是很快,但是這些資料又是需要的
想請教數組儲存大資料有什麼最佳化的東西,為什麼mysql串連遠程很慢,換成本地卻非常快?
------解決方案--------------------
mysql_query 取得的結果集是緩衝在 mysql 那邊的
mysql_fetch_array 每次讀取的是那個緩衝在 mysql 的記錄
於是你每讀一次就有一次遠端資料傳輸,自然就很慢了
mysqli 有一個函數可以一次性的將查詢結果集取回,並緩衝在本地
不過函數名不記得了(因為不用mysqli),前兩個月在這裡討論過
pdo 提供了 fetchall 方法,可以一次性的將結果集轉換成數組
好像 mysqli 也提供了
只要你的資料庫類不是基於 mysql函數 的,總是有辦法解決遠程讀取慢的問題的
------解決方案--------------------
現在別用原始的php mysql函數了
換mysqli或者pdo吧
尤其是pdo比較好用
------解決方案--------------------
假定讀取一條記錄的時間是 50ms
那麼 50 條記錄就是 50 * 50 = 2500 ms = 2.5s
ping 的結果是單邊平均耗時
而通訊是雙邊的