Back to top

Autore Topic: Timeout su elaborazione righe query  (Letto 2462 volte)

Offline teoneo

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Timeout su elaborazione righe query
« il: 23 Feb 2007, 11:41:06 »
Ho creato un componente che crea una testo fisso e lo invia via mail ad una serie di nominativi prelevati dalla tabella utenti.

Il problema è che il numero degli utenti supera le 2000 unità e il ciclo di invio (for each sulle righe ritornate dal db) mi si interrompe sempre dopo un numero di secondi, come se il processo di elaborazione dello script php avesse un timeout.

Non sono riuscito a capire da cosa dipenda perchè se faccio un invio spezzando la query a blocchi di 500 righe funziona tutto correttamente.

Qualcuno può darmi una dritta ?.

Grazie
Teo

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #1 il: 23 Feb 2007, 11:47:15 »
E' normale, gli script PHP hanno un timeout di 30 secondi.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline teoneo

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #2 il: 23 Feb 2007, 13:05:10 »
>>E' normale, gli script PHP hanno un timeout di 30 secondi.
Non male come dritta per risolvere il problema..

Comunque nel frattempo ho cercato sul manuale php ed ho trovato come fare la variazione nel PHP.INI.

Teo.

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #3 il: 23 Feb 2007, 13:49:24 »
Comunque nel frattempo ho cercato sul manuale php ed ho trovato come fare la variazione nel PHP.INI.

Puoi farlo in locale, ma in remoto spesso non ti è permesso fare queste modifiche.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline teoneo

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #4 il: 23 Feb 2007, 14:57:08 »
Comunque nel frattempo ho cercato sul manuale php ed ho trovato come fare la variazione nel PHP.INI.

Puoi farlo in locale, ma in remoto spesso non ti è permesso fare queste modifiche.

Vero, ma fortunatamente devo agire su una macchina della quale ho l'accesso.
Colgo l'occasione della tua giusta osservazione per porre allora un quesito: come si può sviluppare un modulo che consenta di processare interamente un numero di righe di una tabella senza incorrere nel time out?.
Ad esempio un invio di una newsletter a 5000 iscritti ?

Grazie
Teo

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #5 il: 23 Feb 2007, 14:58:38 »
Colgo l'occasione della tua giusta osservazione per porre allora un quesito: come si può sviluppare un modulo che consenta di processare interamente un numero di righe di una tabella senza incorrere nel time out?.

Non puoi.
Devi spezzare l'elaborazione in sottoblocchi che rientrino nel timeout.
Al termine di ogni sottoblocco, lo script va reinvocato per elaborare il blocco successivo.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline teoneo

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #6 il: 26 Feb 2007, 14:20:05 »
Colgo l'occasione della tua giusta osservazione per porre allora un quesito: come si può sviluppare un modulo che consenta di processare interamente un numero di righe di una tabella senza incorrere nel time out?.

Non puoi.
Devi spezzare l'elaborazione in sottoblocchi che rientrino nel timeout.
Al termine di ogni sottoblocco, lo script va reinvocato per elaborare il blocco successivo.
Ok, ma il primo script che funge da chiamante anche lui avrà il timeout.
Quindi mi stai dicendo che devo prevedere di terminare lo script rimandare il controllo alla pagina web e e mettere qualcosa nella pagina web stessa che mi ridà un POST automaticamente ?

Teo

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Timeout su elaborazione righe query
« Risposta #7 il: 26 Feb 2007, 14:23:57 »
Sì, più o meno.
Lo script può benissimo essere unico.
Anzichè fare il ciclo di invio su 2000 utenti, lo fai su 100 (ad esempio) utenti per volta.
Alla prima invocazione non passi parametri così lo script capisce che iniziare da 0.
Dopo l'invio, lo script richiama se stesso passando come parametro il prossimo utente da cui partire:
  • script.php?start=100
  • script.php?start=200
  • script.php?start=300
  • ...


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

 



Web Design Bolzano Kreatif