如何使用 Cron 作业执行 PHP 文件

Ree*_*ece 1 php wordpress cron

我正在使用在 DigitalOcean WordPress Litespeed Droplet 上托管的 WordPress 网站。我尝试使用 Cron Job 每五分钟在我的主题中运行一个 php 文件。我不想使用默认的 WordPress cron 作业系统。

到目前为止,我已经通过 ssh 连接到服务器。然后使用“crontab -e”进入crontab然后输入以下代码然后保存/退出

*/5 * * * * php /var/www/html/wp-content/themes/my_theme/cron.php
Run Code Online (Sandbox Code Playgroud)

在 cron.php 中,我放置了一个简单的邮件函数用于测试目的:

<?php
    /*template name: Cron*/


    $content = date("h:i:sa");
    wp_mail( 'reece.r.barrett@gmail.com', 'Cron Test', $content, array());
?>
Run Code Online (Sandbox Code Playgroud)

但我从未收到过电子邮件,所以我认为它不起作用。我声明 cron 作业的方式有问题吗?另外,我没有像很多教程那样禁用 WordPress Cron 系统。这是让我自己的 cron 工作所必需的吗?

这就是我看到的一些教程在 wp-config 中禁用 WordPress cron 的方式

define('DISABLE_WP_CRON', true);
Run Code Online (Sandbox Code Playgroud)

Die*_*ego 5

您的问题是,即使您的文件实际上位于主题文件夹内,但它实际上是在 wp core ENV“外部”运行,因为您直接调用它。如果你问我,在 WP 生态系统中使用外部 cron 系统的最佳、最简单和最干净的方法是执行以下操作:

add_action( 'wp_ajax_nopriv_my_cron_action', array( 'myCronAction' ) );

function myCronAction(){
    //...your code
}
Run Code Online (Sandbox Code Playgroud)

这样您就可以利用 WP ajax 端点进入 WP 生态系统。请注意安全性,因为这样您就暴露了 cron url 来完成您的工作。确保这一点取决于您,但这是实现这一目标的最简单方法。

要从你的 cron 中使用它,你只需要制作一些东西来获取这样构建的 URL: https: //yourdomain.com/wp-admin/admin-ajax.php ?action=my_cron_action

如果您不想这样做,那么您必须在 .php 文件中自行引导 WP 核心,请参阅https://wordpress.stackexchange.com/questions/47049/what-is-the- Correct-way-使用 wordpress 函数外部 wordpress 文件