2017-06-27 6 views
5

हल करती है मैं अपने कोड से निम्नलिखित त्रुटि मिलती रहती है:पीडीओ कनेक्शन एपीआई में टाइम आउट हो गया, php-एफ पी एम पुनः आरंभ यह

डाटाबेस कनेक्ट करना विफल: पीडीओ :: __ निर्माण(): 12 बाइट्स के भेज errno के साथ विफल = 110 कनेक्शन का समय

यह त्रुटि लगातार एपीआई पर होती है। अगर वह एपीआई दिन के दौरान बहुत कुछ कहता रहता है तो ऐसा नहीं होता है। केवल जब एपीआई का उपयोग कुछ समय के लिए नहीं किया जाता है।

मैं इसे php-fpm पुनरारंभ/पुनः लोड करके हल कर सकता हूं, लेकिन यह समाधान नहीं होना चाहिए।

क्या किसी को यह पता है कि इसे कैसे हल किया जाए?

--EDIT--

इस डेटाबेस के लिए कनेक्शन के लिए कोड है:

public function connectDatabase($allow_persistent = true) 
{ 
    $this->db = null; 

    $this->readINI(); 

    $pdo_attr = [ 
     PDO::ATTR_PERSISTENT => $allow_persistent, 
     PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8;", 
     PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true, 
    ]; 

    $this->db = new PDO("mysql:host=" . $this->db_data_dbhost . ";dbname=" . $this->db_data_dbname . ";charset=utf8", $this->db_data_username, $this->db_data_password, $pdo_attr); 

    $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

कुछ और itterate करने के लिए, इस पल में दो एपीआई पर प्रयोग किया जाता है।

  • एक लगातार ग्राहकों द्वारा इस्तेमाल किया जाता है और कभी नहीं इस समस्या
  • दूसरे का सामना करना पड़ता अभी तक देखकर के रूप में इस विकास में अब भी है बहुत से ग्राहकों द्वारा नहीं किया जाता है, यह केवल परीक्षण प्रयोजनों के लिए कुछ ग्राहकों के साथ है। हम ऐप को ऐपस्टोर पर धक्का देने का प्रयास करते हैं लेकिन इसे इस समस्या से गोली मार दी जाती है। यह एपीआई अंततः उपरोक्त चित्रित त्रुटि में चलेगा और php-fpm सेवा को पुनरारंभ/पुनः लोड किए बिना इस स्थिति से पुनर्प्राप्त नहीं होगा।
+0

क्या आप लगातार कनेक्शन का उपयोग कर रहे हैं? – Federkun

+0

@Federkun मैंने डेटाबेस से कनेक्शन के लिए कोड जोड़ा, तो हाँ यदि आप – Wouter

+0

कोड का पालन करते हैं तो बस नहीं, http://php.net/manual/en/features.persistent-connections.php – Federkun

उत्तर

2

लगातार कनेक्शन का उपयोग करना अच्छा नहीं है (see why), लेकिन फिर भी, इसे हल करने के लिए आप MySQL कनेक्शन टाइमआउट को बढ़ा सकते हैं।

इसे प्राप्त करने के लिए, my.ini के लिए wait_timeout पैरामीटर देखें।

पेज। साथ ही, आप इस त्रुटि को पकड़ सकते हैं और बस डेटाबेस से पुनः कनेक्ट कर सकते हैं।

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