Iterazione in PHP

  • Creatore Discussione Creatore Discussione piero60
  • Data di inizio Data di inizio

piero60

Utente Attivo
26 Gen 2015
71
2
8
Salve a tutti,
non ho esperienza in PHP ed avrei bisogno di un aiuto:

Dovrei fare in modo che lanciando una pagina PHP questa esegua per N volte sempre lo stesso lavoro,
intervallando l'esecuzione del medesimo per X tempo ed ogni volta visualizzasse sullo schermo l'avvenuta
esecuzione di uno step.
Terminata l'esecuzione per N volte il processo deve arrestarsi.


Start lavoro, in una variabile ho scritto quante volte deve essere eseguito

codice da eseguire

eseguo il codice e stampo su video che l'ho eseguito la prima volta, la seconda, ecc fino ad arrivare ad N

Prima esecuzione terminata, attendo il tempo X e ricomincio d'accapo fino a quando non raggiungo N

E una cosa complicata in PHP, in javascript è fattibile ma in questa applicazione posso utilizzare solamente PHP


Grazie in anticipo.
 
ciao
il problema non è, da quanto ho capito, fargli ripetere n volte un lavoro con un certo intervallo di tempo.
php lavora lato server per cui alla chiamata della pagina esegue il vavoro, ma non fa vedere i risultati uno alla volta ma tutti assieme quando il server ha finito.
ti faccio un esempio.
se provi lo script sootto
PHP:
<?php
for($k=0;$k<5;$k++){
	$tempo=date('h:i:s');
	echo "operazione $k al tempo $tempo<br>";
	sleep(5);//attesa 5 secondi
}
?>
ti accorgi che non succede (esempio)
visualizza
operazione 0 al tempo 11:54:13
e dopo 5 sec
operazione 1 al tempo 11:54:18
ecc....
ma, dopo 20 secondi tutto assieme
operazione 0 al tempo 11:54:13
operazione 1 al tempo 11:54:18
operazione 2 al tempo 11:54:23
operazione 3 al tempo 11:54:28
operazione 4 al tempo 11:54:33
 
Grazie Borgo Italia,

Una cosa del genere potrebbe funzionare ?

<?php
for($k=0;$k<10;$k++){

$eseguito = $k + 1;

Qui inserisco il codice da eseguire

echo "Eseguito N : $eseguito <br>";

sleep(2);//attesa 2 secondi
}
?>

Il mio codice verrebbe eseguito ogni 2 secondi e per 10 volte ?
 
Ultima modifica:
ciao
dipende da cosa intendi per eseguire, se intendi che lo esegua 10 volte si lo esegue, se intendi anche che ti presenti a video la prima esecuzione, aspetti due secondi, ti mostri la seconda, aspetti due secondi.... no
esegue 10 volte l'operazione e dopo 20 secondi ti mostra a video tutte insieme le 10 operazioni
 
Si questo l'ho capito, ciè che non comprendo e se tra una operazione e l'altra passano i 2 secondi.
Ciò che alla fine viene presentato sul video non ha nessuna importanza, la cosa importante è che la porzione di codice venga eseguita ogni 2 o più secondi.
E' questo che non capisco, se l'istruzione sleep() arresta l'esecuzione e poi la riesegue trascorso il tempo programmato.
 
ciao si
tra un'operazione e l'altra passano 2 secondi
esempio sleep si usa nel caso dell'invio di molte email contemporaneamente in modo da non intasare il server mettendo in pausa tra un invio e l'altro
 
ciao
per renderti conto prova a lanciare lo script
PHP:
<?php
$start=time();
for($k=0;$k<5;$k++){
	echo "operazione $k <br>";
}
$fine=time();
$impiego=$fine-$start;
echo "eseguito il primo ciclo in $impiego secondi<br>";
$start=time();
for($k=0;$k<5;$k++){
	echo "operazione $k <br>";
	sleep(2);
}
$fine=time();
$impiego=$fine-$start;
echo "eseguito il seconco ciclo in $impiego secondi<br>";
?>
avrai in output
operazione 0
operazione 1
operazione 2
operazione 3
operazione 4
eseguito il primo ciclo in 0 secondi (preticamente 0, centesimi o millesimi di secondo, ma lo vedi alla fine del secondo)
operazione 0
operazione 1
operazione 2
operazione 3
operazione 4
eseguito il seconco ciclo in 10 secondi

è evidente che poi il tempo impegato e funzione anche di quanto ci impega l'operazione ad eseguirsi
 

Discussioni simili