thinkphp中new PDO()需要幾秒鐘時間?

來源:互聯網
上載者:User
今天發現網站開啟特別慢,然後分析原因,發現是資料庫查詢花費時間特別長,一個最簡單的查詢都至少4秒以上,然後分析最終發現原因是執行new PDO(...) 時間花費4秒以上,請問可能是因為什麼原因?

網站用的thinkphp架構,伺服器版本:windows serve 2008.
資料庫在另外一台伺服器上。

另:1.new PDO(localhost...) 不存在該問題
2.new PDO(另外一個windows上啟動並執行資料庫) 出現同樣問題
3.new PDO(另外一個linux上啟動並執行資料庫) 不存在該問題
4.在本地環境中new PDO(同一資料庫) 不存在該問題
...

請求大神解惑啊!!!謝謝

2016-01-28 09:32 更新
測試代碼如下:

$t1=microtime(true);$dsn = "mysql:host=59.175.142.**;dbname=iqgame";$db = new PDO($dsn, '****', '****');s$t2=microtime(true);echo $t2-$t1;     // 輸出4s多

1.web伺服器與資料庫伺服器均在外網,串連資料庫使用IP串連
2.這個問題是突然之間出現的,以前沒有這麼嚴重的連線時間
3.感謝大傢伙的熱心協助~

2016-01-28 10:11 再次更新:
感謝 @LakeChan 的提醒,我試著將web伺服器中的防火牆關閉,則瞬間解決問題!!!
然後我也不知道該怎麼配置防火牆才能屏蔽該問題,只能一條一條規則的嘗試,然後,待我重新開啟防火牆後發現問題居然沒有再出現了!!!
這種心情,感覺被狗[和諧]日了一樣!!!

總結,雖然不知道究竟發生了什麼!但是真心覺得還是Linux大法好啊!!!
最後,真誠的感謝各位同仁的熱心協助,祝各位年終獎翻倍!!!

回複內容:

今天發現網站開啟特別慢,然後分析原因,發現是資料庫查詢花費時間特別長,一個最簡單的查詢都至少4秒以上,然後分析最終發現原因是執行new PDO(...) 時間花費4秒以上,請問可能是因為什麼原因?

網站用的thinkphp架構,伺服器版本:windows serve 2008.
資料庫在另外一台伺服器上。

另:1.new PDO(localhost...) 不存在該問題
2.new PDO(另外一個windows上啟動並執行資料庫) 出現同樣問題
3.new PDO(另外一個linux上啟動並執行資料庫) 不存在該問題
4.在本地環境中new PDO(同一資料庫) 不存在該問題
...

請求大神解惑啊!!!謝謝

2016-01-28 09:32 更新
測試代碼如下:

$t1=microtime(true);$dsn = "mysql:host=59.175.142.**;dbname=iqgame";$db = new PDO($dsn, '****', '****');s$t2=microtime(true);echo $t2-$t1;     // 輸出4s多

1.web伺服器與資料庫伺服器均在外網,串連資料庫使用IP串連
2.這個問題是突然之間出現的,以前沒有這麼嚴重的連線時間
3.感謝大傢伙的熱心協助~

2016-01-28 10:11 再次更新:
感謝 @LakeChan 的提醒,我試著將web伺服器中的防火牆關閉,則瞬間解決問題!!!
然後我也不知道該怎麼配置防火牆才能屏蔽該問題,只能一條一條規則的嘗試,然後,待我重新開啟防火牆後發現問題居然沒有再出現了!!!
這種心情,感覺被狗[和諧]日了一樣!!!

總結,雖然不知道究竟發生了什麼!但是真心覺得還是Linux大法好啊!!!
最後,真誠的感謝各位同仁的熱心協助,祝各位年終獎翻倍!!!

1.使用IP而不是網域名稱,使用網域名稱會讓PDO在串連之前進行一次不必要的dns lookup,當DNS緩衝過於巨大的時候,這個問題可能會更嚴重。(即使是運行在本機,使用 127.0.0.1 而不是 localhost)
2.如果串連到內網的其他伺服器,內網的網路節點是否工作正常?是否會有防火牆處理串連過慢的問題?

網頁伺服器連資料庫伺服器是區域網路還是公網?

看不到代碼,難說。與資料庫是IP連的還是網域名稱連的也有關係

首先看看是不是因為IPV6的原因導致串連慢,其次看看Mysql配置是否合理。PHP不會出現串連慢的問題,問題肯定在mysql上

可能是mysql反向解析的問題,可以對比一下windows和linux伺服器的myslq的設定檔,看下是否有:
skip-name-resolve

另外,mysql日誌應該也會有相應的記錄。

樓主,php的pdo是C寫的擴充,效率是極高的,基本一個串連是毫秒級,所以不用懷疑擴充本身。
1、先看看是否代碼問題,單獨寫個demo用pdo串連下看,耗時多少
2、telnet一下web機跟sql機的耗時看看,是否網路問題(最常見)

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.