2012-03-05 24 views
7

Alcuni post sulla connessione MySQL sono scaduti da PHP utilizzando mysql.connect_timeout. Voglio sapere se questo timeout impostato da PHP è appena scaduto la connessione iniziale a MySQL o valida per una particolare query al database?PHP MySQL impostato Timeout di connessione

Il mio caso qui è che, ho una pagina con connessione a MySQL in alto e quindi sto eseguendo dire 3-4 query a MySQL una dopo l'altra. 1a e 2a query prese solo 1-2 secondi per eseguire dove 3a query richiede 20 secondi. Ora, nei casi in cui la terza query richiede più di 20 secondi, desidero chiamare il timeout. Quindi, la domanda qui è che l'impostazione di questa volta da PHP è applicabile alla connessione iniziale al database o è applicabile anche ad ogni query successiva (indipendentemente). Se in seguito è il caso, allora come posso impostarlo su timeout dopo 20 secondi per la terza query?

risposta

4

Il parametro connect_timeout è valido solo al momento della connessione. È utile verificare se il server DB è raggiungibile in 20 secondi circa. Una volta connesso, il timeout specificato non è più valido.

Non trovo alcun parametro di timeout della query sulla pagina di manuale mysql ufficiale: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html quindi non penso che sia possibile.

3

vedono:

set_time_limit(0); 
ini_set('mysql.connect_timeout','0'); 
ini_set('max_execution_time', '0'); 
+1

max_execution_time riguarda solo l'utilizzo della cpu - l'interrogazione di un database non fa uso della CPU dal processo php – iRaS

0

Si dovrà sborsare un processo figlio, il processo padre ucciderà il processo figlio se qualche condizione non è soddisfatta entro 20 secondi.

Oppure utilizzare un linguaggio come node.js che non blocchi il thread corrente per un'operazione IO come una query.

1

E 'nel vostro file di configurazione di PHP. La posizione di questo file è diversa da un sistema all'altro. Su Ubuntu e Debian si trova in /etc/php5/apache2/php.ini

mysql.connect_timeout = 60 /* the default value is 60 seconds */ 
+0

qualsiasi spiegazione del perché ho ottenuto un voto negativo su una risposta di lavoro? – Kareem