Domanda

Ho un problema con la connessione MySQL.

Ho uno script PHP che caricamento delle foto, questo script farlo:


1) mysql connection
2) check user rights for uploading photo (I use a sql query for this)
3) Image processing
4) sql query for insering photo data in database
Ho impostato un timeout di connessione mysql per 5 s.

Tutto funziona grande se il tempo di elaborazione delle immagini è inferiore a 5 secondi (connessione mysql timeout) altrimenti ho ottenuto un errore quando il passaggio 4) viene eseguito, l'errore è "server MySQL è andato via".

Così, ho controllato se la connessione mysql era ancora vivo dopo l'elaborazione delle immagini e la connessione mysql morti se il tempo di elaborazione delle immagini è più di 5s.

I inserito questo codice dopo l'elaborazione dell'immagine (fase 3)


if(!mysql_ping($conn)){
$conn = mysql_connect('localhost', 'mysqluser', 'mypass');
$db   = mysql_select_db('mydb',$conn);
}

ma non funziona! questo è il mio vero problema.

var_dump($conn)
danno un mysql ressource link, ma

FALSO ritorno
mysql_select_db('mydb',$conn)
, e il ritorno
mysql_error()
"server MySQL è andato via"
Qualcuno mi può aiutare?

Grazie in anticipo.

È stato utile?

Soluzione

http://dev.mysql.com /doc/refman/5.0/en/gone-away.html :

  

Il motivo più comune per il server MySQL è andato via l'errore è che il server è scaduta e ha chiuso la connessione.
  [...]
  Alcune altre ragioni comuni per il server MySQL è andato via di errore sono:
  * Tu (o l'amministratore del db) ha ucciso il filo conduttore con un'istruzione KILL o di un comando mysqladmin kill.
  * Si è tentato di eseguire una query dopo aver chiuso la connessione al server. Questo indica un errore logico nell'applicazione che dovrebbe essere corretto.
  * Un'applicazione client in esecuzione su un host diverso non ha i privilegi necessari per connettervi al server MySQL da tale host.
  * Hai un timeout dalla connessione TCP / IP sul lato client. Ciò può accadere se avete usato i comandi: mysql_options (..., MYSQL_OPT_READ_TIMEOUT, ...) o mysql_options (..., MYSQL_OPT_WRITE_TIMEOUT, ...). In questo caso, aumentare il timeout può aiutare a risolvere il problema.
  * Si verifica un timeout sul lato server e la riconnessione automatica nel client è disattivata (la bandiera riconnessione nella struttura MySQL è uguale a 0).
  * Si utilizza un client Windows e il server aveva lasciato cadere la connessione (probabilmente perché wait_timeout scaduto) prima che il comando è stato emesso.

ecc.

Altri suggerimenti

prima provare ad aumentare il timeout, quindi chiudere la connessione dopo passaggio 4

mysql_close()

Perché aumentare il timeout? perché l'immagine di elaborazione sicuramente richiede più di 5 secondi, quindi si verifica questo problema!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top