2013-03-01 3 views
5

मैंने वेब साइट और xdebug का उपयोग अपनी साइट के प्रदर्शन को खराब करने के लिए किया। पृष्ठ लोडिंग समय का 85% फ़ंक्शन php :: पीडीओ -> __ निर्माण (लगभग 1 सेकंड) के लिए लिया जाता है ...तेज गति php :: पीडीओ -> __ निर्माण

यह अस्वीकार्य है। क्या मैं किसी भी तरह इस समारोह को अनुकूलित कर सकता हूं? (कैशिंग, MySQL कॉन्फ़िगरेशन इत्यादि)

मैं रेडबीन के साथ php, mysql और codeigniter का उपयोग कर रहा हूं। redbean का उपयोग करता है कि समारोह का निर्माण पीडीओ ...

यहाँ समारोह स्रोत कोड

/** 
* Establishes a connection to the database using PHP PDO 
* functionality. If a connection has already been established this 
* method will simply return directly. This method also turns on 
* UTF8 for the database and PDO-ERRMODE-EXCEPTION as well as 
* PDO-FETCH-ASSOC. 
* 
* @return void 
*/ 
public function connect() { 
    if ($this->isConnected) return; 
    $user = $this->connectInfo['user']; 
    $pass = $this->connectInfo['pass']; 
    //PDO::MYSQL_ATTR_INIT_COMMAND 
    $this->pdo = new PDO( 
       $this->dsn, 
       $user, 
       $pass, 
       array(1002 => 'SET NAMES utf8', 
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 

       ) 
    ); 
    $this->pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); 
    $this->isConnected = true; 
} 
+0

अगर यह अस्वीकार्य है, तो इस बारे में सोचें कि आप इतनी बार __construct क्यों बुला रहे हैं और वहां से काम करते हैं। –

+4

[Google महान है, आदमी। मुझे 2 सेकंड ले गए] (http://stackoverflow.com/questions/9800577/why-is-constructing-pdo-connection-slow) –

+2

बीटीडब्ल्यू, वर्णसेट डीएसएन –

उत्तर

7

समाधान काफी सरल है ...

पीडीओ स्थानीय होस्ट से कनेक्ट कर रहा -> 1 सेकंड

पीडीओ 127.0 से कनेक्ट कर रहा .0.1 -> 50 मिलीसेकंड ...

मुझे नहीं लगता है कि क्यों लगता है ... & कोशिश करने के साथ कुछ करने के लिए लगता है ipv6 कनेक्शन के लिए प्रतीक्षा करें, फिर अच्छे पुराने ipv4 पर वापस आ जाओ ... ipv4 adresse कोशिश नहीं करता है ipv6 ...

0

पीडीओ निर्माण में तो ... यह जितनी जल्दी संभव के रूप में किया जाना चाहिए है। क्या वह MySQL सर्वर एक ही सर्वर पर है, या यह कहीं और रिमोट होस्ट है? साथ ही, mysql_connect को कनेक्ट करने के लिए समान समय लगता है? मैं Redbean भी उपयोग कर रहा हूँ और यह है < 0.01s init करने के लिए है कि ...

संबंधित मुद्दे