- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Script] Utilizzare cron senza account di root
-
Si devi accedere alla pagina,e ogni volta che lo fai il timer riparte.
Per esempio se uno accede alla pagina alle 17.00 l'esecuzione la volta successiva avverrà alle 17.15,poi alle 17.30.
Se uno però visita di nuovo la pagina alle 17.02,le future esecuzioni saranno alle 17.17 e alle 17.32Forse io ho capito la tua paura,quella che un utente visiti la pagina azzerando il timer.
Ho avuto anch'io la stessa preoccupazione
Potresti risolvere però mettendo un parametro get nascosto che avvii l'applicazione in questo modo:[php]
<?php
if ($_GET[action]=="avvia_timer"){
ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina
set_time_limit(0); // funzione per far continuare lo script all'infinito
$interval=60*15; // ogni 15 minuti...
do{// funzioni da svolgere ogni 15 minuti
sleep($interval); // funzione per attendere 15 minuti dopo l'intervento
}while(true);
}
else{exit();}?>
[/php]
Ora l'esecuzione avverrà soltanto se alla querystring della pagina richiamata viene aggiunto:"action=avvia_timer"
In alternativa si può creare un login da amministratore che stabilisce una sessione e svolgere l'operazione solo se a sessione stabilita
Se invece vuoi creare più timer puoi costruire un file per ogni operazione da svolgere e avviarli...
Ciao!
-
Interessantissima chicca.
Perdonatemi però la domanda banale: se io chiudo il browser dopo avere lanciato la pagina in questione, le funzioni non verranno più svolte vero?
-
Grazie Probid, lo segnalo nella raccolta dei thread utili, sarebbe un peccato perderlo.
-
@Bazzilla said:
Interessantissima chicca.
Perdonatemi però la domanda banale: se io chiudo il browser dopo avere lanciato la pagina in questione, le funzioni non verranno più svolte vero?
no, continueranno a girare, perche' e' presente questa istruzione
[php]ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina[/php]
-
@olaola said:
no, continueranno a girare, perche' e' presente questa istruzione
[php]ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina[/php]Mi era sfuggita quella istruzione (che tra l'altro non conoscevo).
Grazie per l'osservazione.
-
@olaola said:
no, continueranno a girare, perche' e' presente questa istruzione
[php]ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina[/php]Quindi per far interrompere l'esecuzione cosa bisogna fare ? Riavviare il server ?
Ciao
-
Intervengo per correggere un errorino nello script proposto di cui mi sono accorto leggendo la pagina della documentazione della funzione ignore_user_abort.
Tale funzione, chiamata senza argomanti, restituisce solo lo stato attuale delle impostazioni. Per attivarla bisogna chiamarla con
[PHP]ignore_user_abort(TRUE);[/PHP]
-
bella e utile questa chicca!
xò mi unisco alla domanda di dragone67!
Per interrompere lo script quindi bisogna riavviare il server?
se così fosse una volta avviato uno script in un server esterno che non si è un grado di controllare (es. aruba) non si potrebbe più fermare?
oppure semplicemente si cancella la pagina e stop?
scusate, magari è una stupidaggine ma sono stanco oggi, non riesco a ragionaregrazie
ciao ciao
-
@desu said:
scusate, magari è una stupidaggine ma sono stanco oggi, non riesco a ragionare
Male comune...:sonno:
-
@desu said:
Per interrompere lo script quindi bisogna riavviare il server?
se così fosse una volta avviato uno script in un server esterno che non si è un grado di controllare (es. aruba) non si potrebbe più fermare?
oppure semplicemente si cancella la pagina e stop?La questione però interessa anche a me: come si ferma lo script?
Proverei da solo, ma non ho PHP in locale.
-
mi associo...
come si fa ad interrompere l'esecuzione dello script?
grazie... ottimo 3d
-
scusate se rompo...
ma qualcuno sa come interrompere l'esecuzione del cron una volta avviata?
grazie anticipatamente
-
non ne sono certo ma se > ignore_user_abort(TRUE);
non permette di interrompere l'esecuzione a questo punto basta eliminare quella riga uppare nuovamente far ripartire l'esecuzione e chiudere il browser
-
Ho provato come uno stupido lo script postato all'inizio della discussione
risultato mi arriva una email ogni minuto e va bene (era previsto)
MA, ora, non so come fermarlo...Help me
-
ignore_user_abort(TRUE);
eliminala e quando chiudi la pagina si blocca tutto
-
ho provato...
ho levato tutto e anche riavviato il pc ma continuo a ricevere email, ci vorrebbe una funzione php per eliminare i demoni o simili....
ps:grazie comunque.
-
se riavvi il pc è strano che continui a funzionare, a meno che non hai il server (apache) che si avvia all'avvio di windows.
-
No io non ho apache.
non ho nessun server locale.comunque ho lanciato quel comando su REGISTER... se ti può essere utile.
-
se non hai nessun server dove fai i test?
direttamente online?
se lo fai direttamente online se non sbaglio dovrebbero riavviare i provider il server altrimenti non lo bloccano
neanche se cancelli il file
-
Sembra che sia riuscito ad interrompere le email
facendo:ignore_user_abort(FALSE);
Ciao e grazie