main

Blog Chineold

WordPress 2.9 : planification manquée, la solution

28/12/2009 — par Cédric BEAU

Le Blog Chine, c’est la Chine, mais c’est aussi un Blog. Un blog fièrement propulsé par WordPress et hébergé chez Alwaysdata (qui sort d’ailleurs aujourd’hui son back-office traduit en Chinois)

Et sur les Blog wordpress qui ont effectué leur mise à jour automatique (ou non automatique d’ailleurs), on observe une erreur sur la planification des articles. En effet, le “joyeux noel” que je vous avait concocté pour ce 25 décembre est tout simplement passé aux oubliettes de WordPress, me laissant une superbe mention “planification manquée” en orange.

Ni une ni deux, je google, comment remédier à ce problème ? Résultats sur le google français : pas grand chose. Avant de chercher en anglais (que je trouverais d’ailleurs plus tard), je décide de mettre en action mon esprit de bricoleur du Web (je suis dans le genre autodictate autodidacte) et hop, une sauvegarde et l’on s’attaque au problème.

Ce qui déclenche la publication des articles, c’est le cron. Le cron, on peut le déclencher en ouvrant simplement une page Web : http://votresiteblog.com/wp-cron.php . Résultat probant, les articles se publient. La machine fonctionne, pas d’erreur sur le serveur, pas la peine d’aller embêter le super staff d’alwaysdata.

Il y a donc un soucis avec le cron, que peut-il bien se passer ? J’ouvre donc le fichier wp-cron.php, et je remarque lorsque WordPress procède, il fait appel à wp-includes/cron.php . Ouvrons donc cron.php et remarquons le code suivant :

$cron_url = get_option( ‘siteurl’ ) . ‘/wp-cron.php?doing_wp_cron’;
wp_remote_post( $cron_url, array(‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );

Intéressant, un timeout à 0.01 seconde. Je ne me souvenais pas avoir cela dans les anciennes version de WordPress. Je met donc un timeout à 10 secondes

$cron_url = get_option( ‘siteurl’ ) . ‘/wp-cron.php?doing_wp_cron’;
wp_remote_post( $cron_url, array(‘timeout’ => 10, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );

Et miracle, ça solutionne mon problème.

Je me disais donc, je vais publier ça sur mon Blog Chine pour en faire profiter tout le monde, et une vérification sur google en angliche, et hop, cette solution a marché pour d’autres. Merveilleux. Voici la solution en Français maintenant.

11 comments

  • Fabien

    19/01/2010 at 12:17

    Salut l’ami et merci pour ce conseil.
    J’avais déjà fixé ce bug par le passé mais sans que je sache pourquoi il est revenu (probablement depuis la maj de WordPress).

    Chouette blog btw !

    Reply

    • Chine

      19/01/2010 at 15:57

      Avec un grand plaisir 🙂

      Reply

  • Cheese

    09/02/2010 at 07:37

    Bonjour,

    merci pour ce tips car je me trouve dans le même cas depuis la mise à jour 2.9, j’ai essayé la maj 2.9.1 mais rien n’y fait :/

    cependant en suivant les instructions , en ouvrant le ficher cron.php je n’ai pas le même code :

    $local_time ) die(); foreach ($crons as $timestamp => $cronhooks) { if ( $timestamp > $local_time ) break; foreach ($cronhooks as $hook => $keys) { foreach ($keys as $k => $v) { $schedule = $v[‘schedule’]; if ($schedule != false) { $new_args = array($timestamp, $schedule, $hook, $v[‘args’]); call_user_func_array(‘wp_reschedule_event’, $new_args); } wp_unschedule_event($timestamp, $hook, $v[‘args’]); do_action_ref_array($hook, $v[‘args’]); } } } die();

    (je n’ai pas de ligne de timeout), si vous avez une idée, ca serait sympa

    Reply

  • Chine

    09/02/2010 at 10:59

    Si si tu as le même code, recherche bien toutes les occurrences du terme “timeout”. La section de code que tu me done ici est 76 lignes trop bas (hors commentaires).

    Cédric

    Reply

  • Cheese

    09/02/2010 at 16:46

    Salut,

    tout dabord merci pour ta rapide réponse 😉

    concernant mon dernier post , les dernières lignes de code du cron.php (pris dans la racine) c’est bien les seules lignes qui sont dedans!! 🙂 , j’ai trouvé un deuxième cron.php dans le repertoire WP-INCLUDES dans celui ci il y a effectivement une tartine et bien un timeout, je vais essayer ce soir afin de vérifier si le pb est résolu, je te tiens au courant , merci !

    Reply

  • Cheese

    09/02/2010 at 20:00

    bon, après plusieurs essais infructueux, ca ne ma pas changé le pb, mais wordpress à tellement de paramètres à prendre en compte que c’est du cas / cas suivant la configuration/paramétrage/hébergement de chaque version ah, merci quand même

    Reply

  • Franck

    26/08/2010 at 15:53

    Super merci !

    Reply

  • alertecatastrophe

    23/09/2011 at 06:21

    Merci, j’ai enfin put corriger mon bug sur mon blog, mais sauvegarde de ma base, s’envoie automatiquement maintenant

    Reply

  • Pingback: Ah, êff, kha * | Quenouille

Leave a Reply

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

4 × 5 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.