Annoncé ici avec grand fracas (et ça m’a d’ailleurs valu des mails de menace…), Quelbazar est passé il y a quelques temps sur wordpress.
En tout et pour tout, trois problèmes subsistent :
- Comment insérer, en bas d’un billet, des “notes de bas de pages” telles qu’on peut les voir, par exemple, sur ce billet, qui a été importé de Dotclear. Je sais que c’est possible. Faut que je
trouvelise la doc. - Pourquoi mes billets “planifiés” ne sont-ils pas publiés ?
- Pourquoi n’arrive-je pas à envoyer des trackbacks, ou rétroliens si il y a par ici des défenseurs susceptibles du français ? (En fait, on verra plus bas que c’est lié au point 2…)
Pour le point 1, on verra plus tard
On va parler ici du point 2, donc du 3 aussi :
Wordpress 2.2 inclut son propre mécanisme de “cron” (en fait depuis la version 2.1). Cette fonctionnalité est utilisée, entres autres, pour planifier des publications de billets dans le futur. Et chez moi, même avec une clean install de WP 2.2, cela ne fonctionne pas : Si je planifie un billet, il apparait bien comme “billet planifié” sur le tableau de bord, mais quand l’échéance arrive, le compte à rebours commence à compter à l’envers, mais rien n’est publié. Moche.
Plusieurs personnes ont le même souci. Mais je n’ai trouvé aucune solution réelle.
On en parlait cependant par ici, où un workaroud est proposé. Il fonctionne chez moi, mais j’ai voulu chercher plus loin.
J’ai donc commencé à éditer le fichier wp-cron.php pour commenter les 2 lignes suivantes :
//if ( $_GET['check'] != wp_hash('187425') )
// exit;
Ce qui désactive un check de vérification de qui appelle le script. Ca facilite les tests.
Ca m’a permis de vérifier qu’en appelant directement ce script, la publication de mes billets planifiés fonctionne.
Cherchons donc qui appelle wp-cron.php : C’est la fonction spawn-cron qu’on trouve dans wp-includes/cron.php.
Pour tenter de tracer ce qu’il se passe, j’ai ajouté dans spawn-cron, à la fin, le code suivant :
// DEBUG
$debugfile = fopen ("debugfile.txt", 'w');
fwrite ($debugfile, "cron_url=".$cron_url."rn");
fwrite ($debugfile, "parts[scheme]=".$parts['scheme']."rn");
fwrite ($debugfile, "parts[host]=".$parts['host']."rn");
fwrite ($debugfile, "_SERVER[SERVER_PORT]=".$_SERVER['SERVER_PORT']."rn");
fwrite ($debugfile, "errno=".$errno."rn");
fwrite ($debugfile, "errstr=".$errstr."rn");
fwrite ($debugfile, "parts[path]=".$parts['path']."rn");
fwrite ($debugfile, "_SERVER[HTTP_HOST]=".$_SERVER['HTTP_HOST']."rnrn");
fwrite ($debugfile, "argyle=".$argyle."rn");
fwrite ($debugfile, "HTTP GET="."GET {$parts['path']}?check=" . wp_hash('187425') . " HTTP/1.0rn"
. "Host: {$_SERVER['HTTP_HOST']}rnrn");
Après rechargement, par exemple, du tableau de bord, on a dans debugfile.txt :
cron_url=http://blog.quelbazar.net/wp-cron.php parts[scheme]=http parts[host]=blog.quelbazar.net _SERVER[SERVER_PORT]=80 errno=110 errstr=Connection timed out parts[path]=/wp-cron.php _SERVER[HTTP_HOST]=blog.quelbazar.net
argyle= HTTP GET=GET /wp-cron.php?check=6c85c0a3e6dd3003fa38c446d36548ce HTTP/1.0 Host: blog.quelbazar.net
On voit vite que $argyle est vide, et que $errno et $errstr nous renvoie “Connection timed out”.
J’ai essayé d’augmenter la valeur de timeout de la fonction fsockopen : Le résultat, c’est que les pages du blog mettent plus de temps à charger, mais j’ai toujours le même message d’erreur.
Donc je me suis mis à douter de mon hébergeur. Avec raison : Il bloque les appels avec fsockopen des URLs hébergées chez lui-même.
Au moins, j’ai trouvé pourquoi… : Pas de la faute à Wordpress. Et j’attends des news de mon hébergeur phpnet.
Pour le moment, j’ai appliqué le workaround trouvé ici.
Articles relatifs :
Tags: C4, Différé, Dotclear, Dotclear2, phpnet, Planifié, Trackback, Wordpress


18 juin 2007 à 9:26
Hi mon cher Syklop,
Pour les notes de bas de pages, le plugin Footnotes est ton ami ! http://robm.me.uk/projects/plu...../footnotes
21 juin 2007 à 12:42
@BH : Quoi ??? On ne peut pas faire de notes de bas de page en standard sous WP ????
Un scandale, je vous dis. Je vais re-migrer sous Dotclear.
21 juin 2007 à 15:51
mouaip mais non
4 janvier 2008 à 11:48
Dur dur de trouver un hébergeur “parfait sous toutes les coutures”.
Ca fait 3 mois que je me bat pour en trouver un fiable.
Après une enquête approfondie ( forum, test de mail pour voir la réactivité du support ) j’avais une short list intéressante:
Celeonet ; réactif mais fragile ( un jour c’est le mail, un jour c’est les cronjob, un jour c’est le ftp …. )
Nuxit ; essai gratuit de 15 jours, réactif , mais ils m’ont déjà cramé une base de données !
DRI ; sous des dehors sympa ils prennent les gens pour des billes et leur interface date des années 50.
Je n’avais pas essayé phpnet ; je vais voir de plus près ….
4 janvier 2008 à 17:54
@Domi: des 3 de ta liste, je ne connais personnellement bien que Nuxit (2 sites hébergés chez eux à une époque) et euhhh comment dire… ils sont “gentils” et “réactifs” mais ça s’arrête un peu là quand même… les prix sont discount et le service est au même rang. C’est à dire discount aussi !
4 janvier 2008 à 21:28
PHPnet est aussi à classer dans le “discount” : Prestations basiques, prix plancher.
Côté support, ils répondent vite, mais mes questions n’étaient pas compliquées