php對數組比較有心得的過來看看【疑難】

來源:互聯網
上載者:User
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 的結果是單邊平均耗時
而通訊是雙邊的
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.