Newsgroup: it.comp.www.php
Titolo: Script PHP permanente?

Avendo la necessità di sviluppare un'applicazione che legga periodicamente
nel database (mysql) controllando il verificarsi di certe condizioni
(scadenze, ecc.) inviando una notifica automatica, il tutto però restando in
hosting su server remoto, mi chiedo:
è possibile farlo in php impostando il tempo di timeout a x giorni?
si rischia di rallentare o bloccare il server?
come posso chiudere lo script?
como posso sapere se viene chiuso dal gestore del server?
Se non si potesse fare in php è sufficiente usare Perl? E posso sapere
quando viene chiuso uno script perl? Mi tocca usare Java?
Scusate l'ignoranza e le troppe domande...
Grazie a tutti
Luigi

 ha scritto nel messaggio
news:RvoT7.322324$sq5.15...@news.infostrada.it...

Il problema fondamentalmente è questo: per eseguire codice php devi avere un
browser che faccia una richiesta al server. Mi spiego: immagina che abbia
uno script che controlla la data odierna e se la data corrisponde al
compleanno di un utente modifica la home page scrivendo "auguri tizio". E'
chiaro che se nessuno quel giorno visita la pagina php lo script non verrà
mai eseguito (e quindi è anche vero che nessuno saprà che non abbiamo fatto
gli auguri a tizio).
La soluzione "pezzottata" è quella di collegarti tu ogni giorno alla pagina
per eseguire lo script. La soluzione seria è quella di far funzionare un
daemon ma non tutti i server web lo consentono.
Bye
giaconet

 giaconet
Un'altra possibilita' e' di mettere un include del file con lo script
all'inizio di qualche pagina del sito che viene richiesta frequentemente.
Una semplice riga:
if (condizione) include(nomefiledovestaloscript);
La condizione deve essere settata in modo che sia vera solo una volta al
giorno.
Un esempio:
Se questo script, durante l'esecuzione, modifica un file, potresti mettere
come condizione che la differenza tra la data attuale e quella di modifica
del file sia maggiore di 86400 secondi (ovvero un giorno).
Se lo script non genera un file, potresti farglielo generare tu, una specie
di log file (dove magari vengono annotate le operazioni eseguite dallo
script).
Oppure invece di fare generare il file, potresti salvare in una tabella di
database, la data dell'ultima esecuzione dello script, e testare la
differenza tra la data attuale e quella stampata nel DB.
Questo e' un sistema che abbiamo utilizzato nel nostro sito, che forse e' il
meglio che si possa fare con il PHP. Ovviamente in questo modo non potrai
mai essere sicuro di quanto sia davvero il tempo che intercorre tra due
esecuzioni dello script, perche' dipende dal tempo che passa tra quando sono
passati 86400 secondi dall'ultima esecuzione e la prossima richiesta della
pagina dove e' incluso lo script.
Se non hai particolari necessita' che lo script venga eseguito tutti i
giorni alla stessa ora, puo' andare, altrimenti no. Magari potresti
abbassare il valore 86400 di un po', a seconda della popolarita' della
pagina. Se il valore lo lasci a 86400, lo script verra' eseguito
inevitabilmente ogni giorno piu' tardi.
Spero di esserti stato di aiuto.
Ciao
Daniele

Mai sentito parlare di crontab ?? :))
Chiama un'applicazione a cadenze temporali ben definite.
ahhh i file .php non sono applicazioni ? E allora usare linx per chiamare le
pagine suddette ?? :-))
Non solo, ma ricevete pure l'output del comando in posta :-) Cosě se ci sono
problemi...
J
PS Crontab non blocca nulla, vai tranquillo.

 PS Crontab non blocca nulla, vai tranquillo.
ciao 

Vi ringrazio in blocco per le vostre risposte! :-)
In effetti ho sentito parlare di crontab, ma avevo escluso a priori che
potessi usarla in hosting, chiederò...
Gli altri suggerimenti sono tutti validi, in effetti ci avevo pensato, ma
non posso usare nulla che sia collegato al traffico medio dell'utente,
essendo una intranet in costruzione per cui quasta media è prossima a
zero...
Dovrò attivarlo io, temo, il che significa che sarà una funzionalità
scarsamente 'affidabile' :-)
Grazie a tutti!
Luigi

 ha scritto nel messaggio
news:p8%T7.333704$sq5.16...@news.infostrada.it...

Se è una intranet allora il web server è "raggiungibile". Scusa fai presente
il problema all'amministratore della rete.
Comunque le soluzioni a questo punto si moltiplicano a dismisura. La più
corretta, secondo me, è sempre il famoso demone sul webserver che ti fa le
cose, ma se proprio non vuoi chiedere all'amministratore o se ami le
soluzioni fatte in casa cercati un PC in rete sempre acceso (e collegato);
scrivi, o ti fai scrivere, un programmino (puoi utilizzare qualsiasi
linguaggio, java, c, visual basic, delphi, ecc.) che fa una richiesta http
al web server (un GET alla pagina esegui.php). Il web server esaudisce la
richiesta ed esegue il codice php contenuto nel file.
Adesso che ci penso potreti addirittura utilizzare il browser comandato da
qualcosa simile alla pianificazione delle attività di windows (tipo tutti i
giorni alle 00:01 lancia il browser e collegati alla pagina esegui.php).
Bye
giaconet

Ciao!
Ehm... mi sono espresso male! L'intranet č solo il sito web in hosting su
cio sto lavorando, che quindi sarebbe piů corretto chiamare extranet...
io non ho accesso al server, un normale provider... e neppure ho un pc
sempre online, putroppo, lavorando da casa...
Grazie comunque...
Luigi