updater

Updater e` una semplice classe php che permette di aggiornare il contenuto di una o piu` cartelle ftp su uno o più server. Le varie installazioni si impostano in un file installations.ini che e` tipo:

[freak]
url = "http://www.freakssss.com"
ftp = "ftp.freaks.com"
usr = "nomeutente"
pwd = "password"
base = "/public_html/myapp"
source = "../myapp"
mode = "CONF"
after = "install_myapp.php"
before = "prepare_myapp.php"

[freakmyapp2]
...
...

Ogni blocco rappresenta una delle installazioni da aggiornare. I parametri non banali sono:

  • base: directory assoluta nel server ftp in cui caricare i file
  • source *: directory locale che rappresenta la root dei file da aggiornare
  • mode: puo` assumere 4 valori ALL: tutti i file vengono caricati CONF: vengono caricati solo i file che rispettano il file di configurazione DATE: vengono caricati solo i file che non sono aggiornati o che non esistono nella cartella ftp CONFDATE: entrambe le precedenti

  • after : file che, se esiste, viene eseguito al termine di una installazione (e` ancora aperta la connessione ftp)

  • before: file che, se esiste, viene eseguito subito prima dell`inizio di una installazione (e` ancora aperta la connessione ftp) * path relativa alla cartella che contiene il file update.php, il file installations.ini dichiara un certo numero di installazioni da eseguire, che possono essere individuate dalla stringa contenuta in testa ad ogni blocco e racchiusa da parentesi quadre, nel caso dell’esempio precedente tali etichette sono ‘freakmyapp2’ e ‘freak’. Il file conf per ognuna di queste e’ conf.nome.php, se questo non viene trovato allora viene utilizzato quello di default che e’ conf.php . I file conf devono essere fatti come segue

    array(‘/classes’, ‘/js’),
    ‘files’=>array(‘/lib/conf.inc’),
    ‘exts’=>array(‘zip’, ‘sql’, ‘bz2’, ‘xcf’, ‘csv’, ‘odg’, ‘dia’)
    );
    $consider = array(
    ‘dirs’=>array(),
    ‘files’=>array(‘/lib/tree/xxx.txt’),
    ‘exts’=>array()
    );
    ?>

I file nell`array $ignorealways vengono sempre ignorati; quelli in $exclude vengono esclusi a meno che $consider non chieda il contrario….un eccezione a questo e` rappresentato da ext, infatti se $consider[‘ext’] ha al suo interno anche un solo elemento, allora $exclude[‘ext’] vengono ignorati. Analogo è il caso in cui $consider[‘files’] non sia vuoto, se è così allora è l’unica condizione considerata, e questo velocizza di molto gli aggiornamenti. Infatti se non vengono specificati dei file spefici da aggiornare vengono scansionate ricorsivamente sia la directory locale

`source` sia quella remota `base` e per fare questo occorre aspettare un tempo proporzionale al numero di file totali, non al numero di file da aggiornare effettivamente. Poi i file after e before permettono di fare un bel po di cosette soprattutto perche` e` ancora attiva la connessione ftp (nella variabile $conn) tipo caricare un file php che crea un db, eseguirlo, e poi cancellarlo, o qualunque cosa serva con la connessione attuale. Essi, se utilizzati, devono essere posizionati nelle cartelle after e before presenti all’interno delle cartelle di installazione. Cio` avverra` chiaramente per ognuna delle installazioni individuate all`interno del file installations.ini Ora non resta che eseguire updater.php specificando il nome di una delle cartelle di installazione presenti all’interno della cartella install.

php updater.php myapp1

Source :

updater

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
Posted in php Tagged with: , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

*