Ciclo in php e tempo

  • Creatore Discussione Creatore Discussione IImanuII
  • Data di inizio Data di inizio

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve a tutti, vorrei esporvi un problema.

Comincio subito ;)

Ho una pagina in php in cui è presente un normalissimo ciclo

PHP:
for ($k = 1; $k < 50 + 1; $k++)
{
	echo "Numero: " . $k . "<br/>";
}

Se lancio la pagina e lo lascio in questo modo stamperà ovviamente:
Codice:
Numero: 1
Numero: 2
Numero: 3
Numero: 4

Etc.. etc.. fino a 50.

Fin qui nulla di strano.

Ora se io però voglio che ad ogni stampa di un numero il ciclo freezi di 5 secondi devo modificare il codice così:
PHP:
for ($k = 1; $k < 50 + 1; $k++)
{
	echo "Numero: " . $k . "<br/>";
	sleep(5);
}

Tuttavia il server interrompe l'esecuzione dello script dando questo errore:
Codice:
Service Temporarily Unavailable

The server closed the connection without sending any data.

The server is temporarily unable to service your request due to maintenance downtime or capacity problems.

Due to heavy load on the server, connections may be temporarily blocked from locations that fetch an unusually high number of pages.

We apologize for the inconvenience.

Come posso ovviare a questo errore sapendo che, poichè sono su un host gratuito, non posso intervenire sul php.ini e quindi non posso cambiare max_execution_time e set_time_limit?

L'esecuzione dello script permessa è massimo di 30 secondi.

Ho provato a "spezzare" il ciclo for facendo in modo di crearne 10 tale che ogni ciclo contasse cinque numeri, cioè il primo ciclo contava fino a 5, il secondo da 5 a 10 il terzo da 10 a 15 e così via. Ma ovviamente non è servito a una mazza.
 
Ultima modifica:
E' una richiesta un pò insolita, posso chiederti qual è lo scopo ? Nel senso, per quale motivo devi adottare questa soluzione, qual è il tuo problema iniziale ?
Magari si riesce a trovare un approccio meno problematico.
 
Ciao in realtà non ho un problema ben definito poichè stavo studiando il ciclo for in php, il break e il continue.
Stavo per passare agli array nei cicli e mi sono trovato una cosa di questo genere dinanzi. Ho googlato ma ho visto che nessuno ha proposto una soluzione per "spezzare" cicli molto lunghi.

Ho trovato qualcosa sul Thread ma non credo che si possa applicare a questo caso (o almeno non ne ho le capacità).

Avevo pensato ad una soluzione piuttosto complessa in realtà:

avevo pensato di fare un ciclo che gestisca la creazione di pagine php temporanee nelle quali venga scritto parte del ciclo da eseguire, una volta che tutte le pagine hanno eseguito il ciclo in un iframe vengono aperte e si visualizza il risultato (1.2.3.4.5.6 ecc..)

Ma mi sembra una cosa davvero macchinosa :o

Edit: ovviamente queste cose le studio per hobby quindi non ho una continuità. Quindi essendo soggetto ad un ricorrente analfabetismo di ritorno, mi son creato un piccolo "archivio" di script tutti commentati in modo da rinfrescarmi la memoria immediatamente quando li vado a prendere :P
 
Ultima modifica:
Ciao, non avendo accesso al php.ini sinceramente non so se tu possa modificarlo ugualmente da php, non ci ho mai provato...
Comunque potresti fare una prova utilizzando ini_set, adesso non ricordo quali siamo i parametri da andare a modificare ma dovrebbero essere qualcosa del tipo MAX_EXECUTION_TIME e SET_TIME_LIMIT.
 
Ciao, non avendo accesso al php.ini sinceramente non so se tu possa modificarlo ugualmente da php, non ci ho mai provato...
Comunque potresti fare una prova utilizzando ini_set, adesso non ricordo quali siamo i parametri da andare a modificare ma dovrebbero essere qualcosa del tipo MAX_EXECUTION_TIME e SET_TIME_LIMIT.
Ciao grazie per la risposta ma non posso modificare quei valori in quel modo. In realtà mi interessa capire come frammentare il ciclo for :P
 

Discussioni simili