Zpožděná publikace (Nefunkční CRON) na WordPress
Dobrý den,
bojuji s problémem špatně fungujícího CRONu na webu. Jedná se o web novin, takže články vycházející na čas jsou základ. Bohužel často šéfredaktor hlásí, že ráno nejsou články co nastavil publikované a je u nich chyba opožděné publikace.
Lokální diagnostika problémy s virtuálním CRONem nehlásí, no i tak jsem po postu Separatisty (separatista.cz) vypnul CRON virtuální a začal používat /wp-cron.php volaný z WEDOS administrace. Bohužel i tak se s problémem setkáváme. Nějaké nápady na řešení?
Web běží na nejnovějším WP, placené šabloně a WEDOS NoLimit hostingu s HTTPS.
5 Answers
Zdravím,
WP Cron je spíše taková simulace CRONu. On se neaktivuje, dokud někdo na stránku nepřijde. Takže pokud by měl v 13:00 něco udělat a návštěvník (třeba i bot) aktivuje WP skripty až v 15:00, tak se provede teprve tehdy.
U článků to nevadí, protože je WP publikuje se zpětným datem a časem. Což fakticky nikomu nevadí. Protože ten kdo tam přijde v 15:00 je zároveň první kdo článek uvidí 🙂
Aby se mohl WP Cron aktivovat musí být tedy aktivován WordPress, což může být problém v případě některých cachovacích pluginů. Dělá to třeba WP Fastest Cache – ten navyrábí v podstatě html stránky a ty servíruje přes .htaccess. Podobně by mohla fungovat i Wedos Proxy ta nepustí návštěvníka na samotný WordPress, na druhou stranu by přes ajax měla aktivovat skripty. V každém případě refresh administrace by jej měl aktivovat.
Ten WP Cron se také řídí vlastním časem a časem serveru. Chce to zjistit jaký ukazuje čas. Může tam mít třeba o hodinu méně, takže se ten článek publikuje až za hodinu.
V každém případě bych zkusil ještě kouknout na Stav Webu (Nástroje -> Stav Webu). Když je rozbitý WP Cron tak to tam ukazuje. Případně rozšíření Health Check plugin.
Dobrý den,
můžete si CRON otestovat pomocí jednoduchého skriptu, který vám třeba odešle e-mail? Tak ověříte, že se CRON ze strany webhostingu spouští v pořádku.
Jak moc opožděná je ta publikace? U své služby CRON uvádíme, že přesnost může být v řádu několika minut, podle aktuálního vytížení. Je možné, že by např. CRON ve 12:01 nepublikoval články, které měly být publikované přesně ve 12:00?
To nevím, je to stále interní CRON wordpressu a ten jsem nepsal. Aktuálně jsem vytvořil testovací stránku a dal ji publikaci na 13:50. Ta se na webu neobjevila. Odeslání mailu na čas ve WP asi neudělám, jak jsem řekl, cron není můj script, takže ověření se provádí špatně.
Články, u kterých chyba nastane se nevydají ani hodinu po uvedeném zpoždění.
Takto pak vypadá chyba:
(čas na ní je screen dvě minuty po plánu, zkoušel jsem to i po dopsání příspěvku – asi 5 minut po plánu).
Přiznám se, že přesně nevím, jak to WordPress plánuje s CRONem a jak pracuje, no snažím se najít problém. Zkoušel jsem CRON link i volat ručně, načte se bilá stránka (to je asi OK). No nic se nestane.


Dobrý den,
nemůže být na vině cachovací plugin, cachování šablony, proxy cache na webhostingu, případně ještě ruční cache přímo v htaccesu či špatně nastavená cache v prohlížeči.
Zkuste zapnout CRON a v F12 zvolte záložku síť , tam zvolte zakázat cache (či zakázat mezipaměť) a při otevřené konzoli F12 nasimulujte prosím celý pokus znova.
Dobrý den,
napadá mě jedno řešení (nevyzkoušeno, myšlenka vychází z toho, co psal IS97596).
Pokud ke správnému fungování WP Cronu stačí pouze to, aby se WP „aktivoval“, tak bych to vyřešil vytvořením Cronu v administraci Wedosu, nastavil nejnižší hodnotu (ta je u neplacené varianty 5min) a prostě si volal vlastní stránky..
Tzn vytvořit Cron, interval 5min, čas od 0 do 23, všechny dny a volat si úvodní stránku webu..
S WP Cronem nemám žádné zkušenosti, takže u sebe to neotestuji, ale myslím si, že za zkoušku to stojí..
Zkusím, no mám podezření, že CRON nefunguje jak by měl. Povypínám cache a zkusím web volat takto se zaplým WP CRONem.
Zkusil jsem i udělat stránku s časem 14:01 a ručně spouštět CRON tesně před, na čas a těsně pod. Bohužel ani to nepomohlo, nemyslím si, že je problém v CRONu, ale spíš někde ve WP.