• [^] # Re: moins charger le serveur

    Posté par (site web personnel) . En réponse au message Script pour mettre a jour les fortunes de bashfr et linuxfr. Évalué à 1.

    Il doit être possible de faire passer le fichier à strfile directement par stdin :
    | strfile -s -r - /usr/share/fortune/bashfr_fortunes.dat


    Non, strfile est tout pourri, car il n'accepte pas de lire sur stdin.


    Autres idées pour éviter de surcharger inutilement le serveur pour télécharger un fichier n'ayant pas été modifié :

    - si on suppose qu'il n'y a que de ajouts en fin de fichier, utiliser wget -c, ça ne télécharger que les nouvelles lignes

    - sinon, utiliser l'option -S de wget pour récupérer uniquement les entêtes HTTP et ainsi la date de dernière modification :
    par exemple pour bashfr :
    4 Last-Modified: 2006年7月03日 21:50:14 GMT
    et se baser sur cette date pour décider de télécharger ou pas le fichier.

    Je n'ai pas trouvé d'option dans wget pour comparer cette date fournie par le serveur http avec la date du fichier local et décider en fonction => il faut le faire soi-même


    Ou sinon, en contournant le bug de wget lors de l'utilisation simultanée de -N et -O, ca donnerait pour le script :


    #!/bin/bash

    cd /usr/share/fortune/

    wget -o /dev/null -N --referer=http://www.bashfr.org/ http://www.bashfr.org/bashfr_fortunes
    grep -v "http://bashfr.org/" /usr/share/fortune/bashfr_fortunes | iconv -f iso-8859-1 -t utf8 > /usr/share/fortune/bashfr_fortunes.clean && strfile -s -r /usr/share/fortune/bashfr_fortunes.clean /usr/share/fortune/bashfr_fortunes.dat

    wget -o /dev/null -N --referer=http://sam.linuxfr.org/ http://sam.linuxfr.org/fortunes.txt && strfile -s -r /usr/share/fortune/fortunes.txt /usr/share/fortune/linuxfr_fortunes.dat


    Ainsi (on peut le voir en enlevant les -o /dev/null et en lançant plusieurs fois de suite le script), les fichiers ne sont récupérés que s'ils ont changé sur le site ==> Moins de charge :)