Mysql
 sql >> Database >  >> RDS >> Mysql

PHP mysql_connect imposta wait_timeout

Non è bene aggrapparsi alle connessioni DB per lunghi periodi perché il DB fornisce solo un numero fisso di connessioni in qualsiasi momento; se ne stai utilizzando uno per anni significa che il tuo DB ha meno capacità di gestire altre richieste, anche se in realtà non stai facendo nulla con quella connessione.

Suggerisco di interrompere la connessione se il programma ha finito di utilizzarlo per il momento e di riconnettersi quando arriva il momento di fare più lavoro sul DB.

Inoltre, questa soluzione proteggerà il tuo programma da possibili downtime del database, ovvero se hai bisogno di riavviare il tuo server DB (succede, anche nella rete meglio supportata). Se mantieni viva la connessione (ad esempio un ping DB come nelle altre risposte), un evento del genere ti lascerà esattamente lo stesso problema che hai ora. Con una connessione correttamente gestita che viene interrotta quando non è necessaria, puoi tranquillamente lasciare in esecuzione il tuo demone anche se hai pianificato tempi di inattività sul tuo DB; finché rimane inattivo per la durata, non è necessario che sia più saggio.

(a parte, metterei in dubbio anche la saggezza di scrivere un programma PHP che funzioni continuamente; PHP è progettato per richieste Web di breve durata. Potrebbe essere in grado di eseguire programmi demone a lungo termine, ma ci sono strumenti migliori per il lavoro)