Mettre à jour tous les Autoblogs - mitsukarenai/Projet-Autoblog GitHub Wiki
La fonction updateall
permet de mettre à jour tous les autoblogs présents dans la ferme par petit groupe.
Chaque appel de la fonction mettra à jour le plus d'autoblogs possible pendant 4 secondes. Passez ce délais, la fonction note de coté les autoblogs qui seront à mettre à jour au prochain appel.
Pour l'appeler, il suffit d'accéder à l'URL de votre ferme en passant updateall
en paramètre (GET
). Par exemple :
http://autoblog.domain.tld/?updateall
Si la page retourné affiche "Not finish", c'est qu'il reste des autoblogs à mettre à jour. Dans le cas contraire, il est affiché "Done".
Il est possible de bypasser cette fonctionnalité et de mettre à jour toute la ferme en ajoutant l'option force
:
http://autoblog.domain.tld/?updateall&force
Vous pouvez mettre à jour toute votre ferme, pendant 4 secondes toutes les 5 minutes par exemple, avec une tâche cron de la forme :
# Projet Autoblog - updateall toutes les 5 minutes
*/5 * * * * wget -q --spider http://autoblog.domain.tld/?updateall
Cette solution permet d'alléger la charge serveur impliquée par la mise à jour de toute la ferme en une fois. Cela se ressent particulièrement sur les serveur ne disposant que d'un seul CPU.
De la même manière :
# Projet Autoblog - updateall tous les jours à minuit
0 0 * * * wget -q http://autoblog.domain.tld/?updateall&force
Dans config.php
, passez la constante ALLOW_FULL_UPDATE
à la valeur FALSE
.
Une autre solution par bash : vous pouvez exécuter ce script bash (par exemple toutes les heures) -à la place de httping, vous pouvez utiliser wget -q -O - "$line"
:
#!/bin/bash
wget 'http://autoblog.domain.tld/?sitemap' -O - | sed 's/<loc>/\n/' | sed 's/<\/loc>//' | grep http >> "liste1.txt"
tail -n +2 "liste1.txt" >> 'liste2.txt'
rm 'liste1.txt'
while read line; do
httping -c1 -G -g "$line"
sleep 2
done < 'liste2.txt'
rm 'liste2.txt'