Ho uno strano problema. Sto eseguendo una query MySQL su un tavolo molto grande da PHP. Il tempo di interrogazione è più di un minuto, ma non è un mio problema. Sembra che PHP stia rinviando la query ogni 66 secondi.Query MySQL riavviata ogni 60 secondi?
show processlist;
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root | localhost | amrs | Query | 32 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
Pochi minuti dopo, ho controllato di nuovo:
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root | localhost | amrs | Query | 188 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
| 150021 | root | localhost | amrs | Query | 122 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
| 150023 | root | localhost | amrs | Query | 56 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
non ho ricaricato la pagina o niente. set_time_limit (0) viene chiamato vicino all'inizio dello script. La parte fastidiosa è che la pagina sembra essere collegata alla più recente corsa. Quindi se uccido 150018, non succede niente di male, ma se uccido 150023 prima che venga generato un altro, la pagina genera un errore di "Esecuzione della query interrotta". 150018 finirà per funzionare da solo, ma non serve a niente perché lo script/pagina non lo riceverà.
Qualcuno ha qualche idea?
EDIT: spettacolo ricco processlist ha pronunciato la seguente (con alcune linee rimosse per brevità e la riservatezza):
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| 147385 | root | localhost:44560 | amrs | Sleep | 14021 | | NULL
| 150248 | root | localhost | NULL | Query | 0 | NULL | show full processlist
| 150251 | root | localhost | amrs | Query | 1 | statistics | /*DEREK*/select ctlno, count(*) AS count from (snip)
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
si può mostrarci il risultato di questo comando: 'show full proceslist;' subito dopo aver eseguito la query? (aprire 2 connessioni, # 1 = la query, # 2 = questa query) –
Sembra lo stesso di quanto mi aspetterei. Ho omesso alcune righe relative ad altre query, come ho fatto in precedenza, ma l'ho aggiunto sopra. – Derek
puoi mostrare la struttura della tabella? non c'è una clausola dove? –