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,
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.