Newsgroup: it.comp.www.php
Titolo: aspettare

ciao a tutti,
probabilmente è una domanda cretina, nel qual caso vi chiedo scusa in
anticipo.
durante l'esecuzione di uno script php ho la necessità di attendere alcuni
minuti, ma non riesco a trovare da nessuna parte nel manuale una wait o
qualcosa di simile che fermi per il tempo indicato l'esecuzione dello
script.
grazie per le risposte
wrksplfl

> attendere
sleep();
http://it.php.net/sleep
rob4you 

Ciao wfkladsfjm e rob,
mi domando, ma a cosa può essere utile sleep()?
se si lancia uno script da cron?
a fare incupire gli utenti?
ciao.

grazie a rob per a risposta.
per ubu, mò te spiego :)
ad ogni avvio del mio pc con win2k ho il desiderio che un programma venga
avviato 30 minuti dopo lo start, un'altro dopo altri 5 minuti, un altro
ancora dopo ulteriori 3 ecc ecc.
programmi non prodotti da me, per intenderci.
se conoscete un software free che faccia bene questa cosa, sono felice di
ascoltarvi, io ho cercato un crontab per windows con queste funzionalità, ma
con scarso successo. quindi ho deciso di farmi un semplice script php per
fare 'sta cosa ^_^
ancora grazie

 fare 'sta cosa ^_^
Non credo che però PHP sia adatto per questo scopo.....
Ma non esiste anche su Windows 2000 la gestione delle operazioni 
pianificate?
Riguardo il dubbio di Ubu re....può rileggersi un thread di qualche giorno 
fa, dove veniva fatta esattamente la stessa domanda, circa appunto l'utilità 
della funzione sleep(): un motivo ad esempio potrebbe essere: immagine che 
per interrogare un db devi attendere prima un tot tempo per determinati 
motivi, bene, la funzione sleep() sarebbe l'ideale. Ovviamente di motivi ce 
ne possono essere tanti....ovviamente a seconda del tipo di esigenza.
rob4you
www.outofmind.eu
 

> Non credo che però PHP sia adatto per questo scopo.....
veramente pare che, complice la mia scarsa esperienza di informatico, nulla
sia adatto :)
le operazioni pianificate in 2k ci sono eccome, ma a me non pare che ci sia
la possibilità di dire "esegui dopo x minuti dall'avvio della macchina". è
possibile specificare un giorno del mese, un intervallo di tempo ciclico,
giorni della settimana ecc ecc, ma pare che a nessuno freghi qualcosa che le
applicazioni vengano eseguite con quel criterio. basterebbe l'esecuzione
automatica, ma così partirebbero tutte insieme, facendo casino, invece
devono partire un po' alla volta, a intervalli di un certo tot.
i problemi che sto riscontrando con php sono i seguenti:
-se nel file di configurazione specifico un path tipo "c:\tappo\tappo.exe"
lui mi interpreta i \t come dei tab, il che è male; probabilmente si può
ovviare, ma non ci ho ancora studiato perchè l'altro problema è più grave;
-arrivo ad eseguire un programma, il programma parte ma sembra che php si
incanti sull'exec. ho guardato il manuale, e suggeriscono per questo bug
(!!!) un workaround: fare una session_write_close() prima di fare l'exec. ci
ho provato, ma non sembra che sortisca l'effetto voluto, almeno non sempre,
e ho come l'imperessione che exec resti in attesa di un codice di ritorno
che non arriverà mai visto che l'applicazione in questione forse non lo da
affatto.
scoraggiato da queste premesse mi son detto. facciamo un bel file bat, meno
elegante ma...
bhè, non ci crederete, ma dopo l'avvio del primo programma anche quello si
incanta!!!!
ma che sfiga.
grazie comunque

 grazie comunque
se vuoi ti faccio uno eseguibile che poi metterai 
nell'esecuzione automatica... e' una stronzata da fare.
ciao

 ciao
ti ringrazio della premura, ma sarei piů interessato al codice sorgente.
ciao

> Non credo che però PHP sia adatto per questo scopo.....
mi pare di capire che tutte le funzioni che trovo (shell_exec, popen,
proc_open, exec) hanno lo scopo di eseguire un comando e dare accesso
all'output...
questo implica che il programma lanciato debba terminare dando un'uscita.
questo non è il mio caso: i programmi lanciati continueranno a funzionare
anche dopo il termine dell'esecuzione dello script, e non producono alcun
output.
possibile che non ci sia una cosa adatta? mhà!
grazie

 possibile che non ci sia una cosa adatta? mhà!
Ti ripeto, usare php per l'idea che hai tu, sembra un'idea un po' troppo 
"alternativa" :-)
Vedi....alla fine a te interessa solo lanciare dei programmi a determinati 
intervalli di tempo, e se è tutto qui, non vedo il motivo di installare un 
web server, poi di installare apache, ecc ecc.
Come se non bastasse, considera che dovrest, tra l'altro, modificare le 
impostazioni di configurazione del php.ini, dal momento che un'attesa di 
mezz'ora è veramente tanto! L'esecuzione andrebbe in timeout (di default ci 
va già dopo trenta secondi, pensa tu!!).
Secondo me puoi provare a esporre il tuo problema direttamente a dei ng di 
windows.
rob4you 

 windows.
se non trovo altra soluzione farò così, ma la cosa mi smebra unpo' ridicola.
grazie e ciao

 sia adatto :)
Se ti può essere utile saperlo io lo uso come opzione per il mio motore 
socket (per chat) fatto in php.
Siccome tale script (consistente in un ciclo infinito) produce dei log su 
file, quando ho la necessità di scaricare il file dal server, per non 
correre il rischio che tale file cambi mentre lo sto scaricando, e per non 
chiudere definitivamente la chat per poi riavviarla, con un comando creato 
da me metto in pausa lo script proprio con sleep. In modo che la chat si 
blocca per 10 secondi (non producendo così alcun log) e io mi posso 
scaricare il file tranquillamente.
Non so... forse c'era un'altra via più semplice... ma per ora sto usando 
questa :-)
ciao,
Luca(riello)

 windows.
Per iniziare (e direi anche finire...):
Per creare una wait in un file batch, esistono vari modi.
Ad esempio prova a usare l'eseguibile già fatto sleep.exe, che puoi 
scaricare da:
http://www.computerhope.com/dutil.htm
Oppure, un alternativa è usare le seguenti righe di codice:
@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul
che puoi controllare dal sito: 
http://malektips.com/dos0017.html
Se avessi Windows 2003, esisterebbe gia embedded la funzione sleep.
Oppure, se vuoi altre righe di codie, le puoi trovare su:
http://www.computerhope.com/rdebug.htm#8
 (CREATE A SLEEP FILE)
Risolto il problema dello sleeping, puoi intervallare semplicemente le 
chiamate ai tuoi programmi, nel modo che desideri (la sintassi è molto 
semplice, e trovi una marea di tutorial su internet, il primo che mi è 
capitato sotto gli occhi: 
http://www.computerhope.com/batch.htm
).
Salvi il tutto con estensione .bat, la metti in esecuzione automatica, e 
così, all'avvio, saranno eseguite le operazioni che desideri.
Tutto ciò se vuoi creare un file batch.
Se invece vuoi crearti un eseguibile, ad esempio in linguaggio C, è 
ugualmente abbastanza semplice, basta leggerti qualche manuale per trovare 
tutto l'occorrente.
ciao,
facci sapere come va,
rob4you
www.outofmind.eu

 ha scritto nel messaggio
news:1153566695.6...@m73g2000cwd.googlegroups.com

Ho un daemon che verifica con LISTEN su pgSQL se ci
sono modifiche su un database.
Ovviamente non mi serve che faccia controlli a raffica, allora
listen -> nulla da fare -> sleep 60 secondi ->a capo
Se non ci fosse lo sleep avrei 1000 LISTEN al secondo,
con grande gioia del database server che questi comandi
li deve gestire :-)
-- 
ValeRyo 

ho capito, è un istruzione utile in certe attività d'amministrazione,
oppure in script lanciati da crontab o al primo avvio, ma non è utile
nelle normali pagine a meno che si abbia interesse a far incupire gli
utenti.
Ciao.


Secondo questa teoria, *tutto e niente* potrebbe essere utile/inutile in 
php, o in qualsiasi altro linguaggio di programmazione.
L'utilità di una funzione è ovviamente nulla fino al momento in cui non 
trovo un appropriato uso da farne.
rob4you
(
www.outofmind.eu
) 

rob4you ha scritto:

non è vero, perché mentre in linguaggi che supportano il
multithreading fa comodo *sempre* poter mettere un thread in sleep, in
php no (ne hai uno), a meno ché siano script per compiti di routine.
Mi sono spiegato?
Ciao

Mi sono spiegato?
OK, è il tuo modo di vedere la cosa. Non capisco bene cosa intendi con 
"compiti di routine", o con "normali pagine", fatto sta che torno a ripetere 
che qualsiasi funzione, di per sé ha un'utilità pari a zero, ma nel momento 
in cui ti si presenta un problema particolare, se quella funzione diventa 
risolutiva, la sua utilità è quasi "vitale".
Ma alla fine.....stiamo facendo "metafisica" sul php, quindi magari dovremmo 
cambiare newsgroup: it.comp.filosophy.php ;-)
rob4you

 ha scritto nel messaggio
news:1153587626....@m73g2000cwd.googlegroups.com

Non hai vinto, ritenta :-)
Prima di mandare un output binario (es: un pdf generato al volo) ho
scoperto che alcune versioni di explorer gradiscono uno sleep(1);
per digerire meglio il content-disposition.
Mi associo alla definizione di rob4you: tutte le funzioni sono inutili
finché non servono! (ah, Lapalisse...)
-- 
ValeRyo