为什么阿帕奇访问日志没有显示与cron作业相关的GET请求?

时间:2021-09-28 作者:Brian

在我的wp-config.php, 我有

define(\'DISABLE_WP_CRON\', true);
我在Mac(Catalina)上,如果我从终端运行crontab - l 我明白了

* * * * * wget -q -O - \'https://mysiite.com/wp-cron.php?doing_wp_cron&cron=true\'; echo "wordpresscron" >> /somepath/stdout.log
在我的日志文件中,我看到wordpresscron 被回应。

但是当我查看apache访问日志时,我没有看到任何GET 与cron相关的请求。

现在,如果我在终端手动输入

wget -q -O - \'https://mysiite.com/wp-cron.php?doing_wp_cron&cron=true\'

一个条目被写入apache访问日志。

所以我就是搞不清楚到底发生了什么。似乎我的cron正在工作,但apache日志没有显示这一点。。。

想法?

编辑:

也许这与我正在更改MAC上的系统时间以测试事件触发有关?

例如,查看显示挂起作业的输出:

enter image description here

所以有一些作业要运行。如果我从终端键入

wp cron event run --due-now

这些挂起的作业都会立即完成。我对crontab做了一些修改,现在

* * * * * cd /sitefolder; wp cron event run --due-now; echo "ran cron" >> /users/brian/sites/stdout.log
我明白了ran cron 在日志中回响。

所以我真的很茫然。这就好像cron正在运行wp cron event run --due-now 命令被发出,它被忽略,我无法想象在作为cron运行时它会被忽略的情况。当作为cron运行时,它可能会被忽略,因为它看到我进行了系统时间更改(尽管我无法想象为什么这会导致命令被忽略)。或者这可能是一个奇怪的permissons问题,在这种情况下,我有权在命令行运行wp cron event run --due-now, 但是cron作业不知何故没有权限?

无论如何,这让我快发疯了。

1 个回复
SO网友:Brian

好的,现在一切正常。不确定是cron环境没有按需要设置其路径,还是有其他原因,但我遵循了以下说明:

https://peterwilson.cc/real-wordpress-cron-with-wp-cli/

https://purpleturtlecreative.com/blog/2020/02/how-to-replace-the-wordpress-cron-with-a-linux-cron-job/

那么现在,我的crontab

PATH=/usr/local/opt/[email protected]/bin:/usr/local/opt/[email protected]/bin:/usr/local/opt/[email protected]/sbin:/usr/local/opt/[email protected]/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
* * * * * /bin/bash /folder/wordpresscron.sh

(在crontab条目后有换行符)

还有剧本:

#!/bin/bash
clear
cd /site
for hook in $(wp cron event list --next_run_relative=now --fields=hook --format=ids);
  do wp cron event run "$hook";
done;
echo "now in cron" >> /folder/stdout.log
不管怎样,很高兴我现在可以继续了!

相关推荐

如何确保WP-Cron工作循环通过所有帖子?

我正在使用WP Crontrol,每天运行一些CRON作业来检查帖子的年龄。如果帖子提前2天发布,则会被删除。这是可行的,但由于某种原因,只有三天以上的帖子被删除了。还有一些仍在出版中。这一定是因为网站上大约有3000个帖子。有没有办法让我的CRON工作更有效率?以下是我运行的当前代码:class EventsWPCron { public function __construct() { if ( ! wp_next_scheduled( \'