ClsHack:Computer Security Blog    

[guida]Creare Script php AUTOMATICO


PHP (acronimo ricorsivo di PHP Hypertext Preprocessor) è concepito per la realizzazione di pagine web dinamiche, e non statiche.
Attualmente è utilizzato principalmente per sviluppare applicazioni web lato server ma può essere usato anche per scrivere script a linea di comando o applicazioni standalone con interfaccia grafica(GTK-PHP).

Vediamo oggi come simulare l’opzione cron eseguibile da GNU/linux (soltanto avendo accesso al server come root) con php.
Questa funzione permette di effettuare operazioni php ad un determinato orario.

es. effettua un backup alle 5 tutti i giorni…


Questi script è utile per chi(come me) non ha i privilegi amministrativi sull’host dove hosta :P (per esempio se si ha un sito hostato da Altervista o da Netsons,e simili) .
Veniamo il primo codice:

< ?
ignore_user_abort(TRUE);
set_time_limit(0);
$interval=60*15;
do{

//CODICE DA ESEGUIRE

   sleep($interval); // funzione per attendere 15 minuti dopo l'intervento
}while(true);
?>

Analizziamo il codice:
ignore_user_abort(TRUE):Questa funzione fa continuare l’esecuzione dello script anche dopo la chiusura della pagina.
set_time_limit(0):Questa variabile impedisce che lo script non giri all’infinito.
$interval=60*15:Questo è il tempo, 60 secondi per 15 volte = a 15 minuti

In questo codice però ce un’errore: OGNI VOLTA CHE VIENE RICARICATA LA PAGINA IL TIMER SI RIAVVIA
.
Vediamo come rimediare:

 < ?
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();}?>

Cosi il time si avvia solo se ce una richiesta GET avvia timer:
$_GET[action]==”avvia_timer”

Bene adesso vediamo come terminare questa operazione…
Modifichiamo la precedente pagina sostituendo la riga:
ignore_user_abort(TRUE);
con questa:
ignore_user_abort(FALSE);

ricarichiamo la pagina e adesso una volta chiusa la pagina lo script si fermerà !

Related posts:

  1. [javascript]Seleziona sfondo

This entry was posted on Saturday, June 27th, 2009 at 1:21 pm and is filed under Programming. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Tagged with:
  • Pingback: ZicZac.it, clicca qui e vota questo articolo!

  • Pingback: Technotizie.it

  • Pingback: upnews.it

  • Pingback: diggita.it

  • PhP

    Molto utile ;) Grazie

  • http://www.decalfont.com kaliber

    bhe per fare in modo che lo script si avvi una volta sola con più refresh della pagina basterebbe salvare lo stato in un file di testo per esempio.
    Altrimenti con le successive richieste $_GET[action] <- ”avvia_timer” lo script si riavvia.
    Poi dipende da quello che si vuole fare.

    ciao!

  • Pingback: ClsHack [guida]Creare Script php AUTOMTICO

  • admin

    @ kaliber:
    Ciao kaliber, quello che dici tu è giusto ;)
    Ma è giusto anche $_GET[action]==”avvia_timer” poichè quella ichiesta la conosce solo l’ admin e quindi sa lui quando avviarlo :P

  • http://www.decalfont.com kaliber

    @ admin:
    sisi, come esempio scolastico va bene quello che dici :) Altrimenti il codice prendeva più corpo disorientando lo scopo di ciò che il tuo articolo vuole comunicare…

    Con la mia soluzione si evita eventuali “click involontari” supponendo che l’admin faccia puntare per esempio un bottone dalla sua area riservata verso ?action=avvia_timer

    E’ quello che farò prossimamente nel mio sito per alcune cosucce ;)
    grazie, molto utile! pagina aggiunta ai segnalibri.
    Ciao!

  • admin

    @ kaliber:

    Si dopo ognuno fa come vuole ;)
    Il mio script era un normalissimo esempio per far capire quanto è potente php, dopo ognuno se lo personalizza come vuole ;)
    Ad esempio per fare backup o ottimizzare il database, come ho fatto io ogni tal ora,giorno ;)

    Grazie a te!!!
    Ciao kaliber

  • Marco

    Ciao.

    Ho avviato il primo codice non conoscendo il secondo ed ora ricevo in continuazione email dato che avevo impostato un invio di mail.

    C’è un modo per eliminare questo task senza dover richiedere il riavvio del server?

    Grazie,
    Marco.

  • http://www.clshack.it Alessio

    @ Marco:

    Ciao marco, si il modo c’è..anzi ci sono più modi.

    Il primo è quello di rinominare lo script php ad esempio script.php in script.ph

    Il secondo è di editarlo cosi:
    ignore_user_abort(FALSE); e ricaricarlo dal brower.

    Spero di asserti stato d’aiuto ciao Marco