"Missed schedule" posting bug

时间:2016-07-21 作者:zgall1

我有一个低流量WordPress(4.5.3)网站http://brandgrowmedia.ca/.

当博客帖子被安排时,它通常(大约80%的时间)不会发布,并被标记为“错过了时间表”。我调查了这个问题,认为这与cron任务没有启动有关,因为该站点没有足够的流量

为了解决这个问题,我安装了插件WP-Cron-Control。按照插件的说明,我随后登录到我的cPanel并设置了一个cron作业,该作业调用了相应的函数。然而,这似乎没有任何影响,该职位仍然被标记为“错过了时间表”的大多数时间。

cPanel中cron作业的屏幕截图

Cron Job

插件设置页面截图

Plugin settings

有人能帮忙吗?

3 个回复
最合适的回答,由SO网友:Helmi 整理而成

您并不需要插件来及时定义这些类型的cronjobs。您只需可靠地调用Wordpress Cron文件wp-cron.php

问题是您的Webhost是否允许您启动wget 没有任何path命令,或者允许启动它。

我会先打电话example.com/wp-cron.php 如果错过帖子,请手动检查这是否解决了您的问题。因此,您应该卸载任何cron插件,并在wp-config.php 通过添加

define(\'DISABLE_WP_CRON\', \'true\');

然后尝试一下。

如果可行,我将尝试webhosters cron函数(但在cron插件提供的URL上没有任何参数)。如果您的站点位于SSL上,您可能需要添加“--无检查证书”,以避免出现问题。下面是一个cronjob示例

*/2 * * * * /usr/bin/wget -q -O /dev/null --no-check-certificate https://example.com/wp-cron.php

说明:

  • */2 * * * * 指一天中的每一小时和每一天的每一秒
  • /usr/bin/wget 从源位置调用程序wget-这取决于您的提供程序/服务器-q -O /dev/null Silent输出,如果有任何输出,则将所有内容推到/dev/null--no-check-certificates 忽略https调用的证书并在此处避免问题
如果您在手动调用此URL时仍遇到问题,那么您的站点上的缓存可能会出现一些问题。如果您正在使用任何类型的缓存插件,或者您的提供商正在使用代理,那么您可能应该尝试在不激活这些东西的情况下进行测试,以避免出现任何问题。

SO网友:Gary Hall

我有一些问题publish_future_post 没有开火。我查看了一下,在我的情况下,是Jetpack网站地图生成器没有返回到wp-cron.php. 因此,在Jetpack站点地图生成器挂钩之后,现在到期的任何挂钩当时都没有开火。所以,一个可能的原因是行为不端的钩子。使用WP-Crontrol插件,我将站点地图生成器的启动时间更改为我的客户端计划发布帖子的时间之后。这是可行的,但出于某种原因,我永远无法理解它再次发生的原因。因此,由于我可以在主机上访问WP CLI,并且我已经在运行一个脚本来处理站点任务,包括运行wp-cron.php, 我使用wp cli运行publish_future_post 钩我遵循的模式如下:;您可以根据自己的需要进行调整。与…有关的功能publish_future_post 有一个安全检查,不要过早发布帖子,但使用起来最安全--due-now. 由于WP CLI已经安装在我的主机上,我无法给出如何安装它的说明;也许这里的其他人可以提供一些信息。

# directory where WordPress files are installed. wp reads wp-config.php.
# This directory may be different for you
cd $HOME/public_html

# --due-now ensures only schedule posts ready to post will be published
# you could add --path=<path to wp files> instead of using line above but I 
# think for the next line to work you need to be where your WordPress files are
# The directory for wp may be different for you
/usr/bin/wp cron event run publish_future_post --due-now

# Run other cron events normally. The directory for php may be different for you
/usr/local/bin/php wp-cron.php 

SO网友:dpoakaspine

您也可以使用webcron。在一定时间间隔内调用域的站点或服务。有点像“假”访客。