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



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

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

*/5 * * * * php /var/www/html/wp-content/themes/my_theme/cron.php

在cron.php中,我放了一个简单的邮件功能用于测试:

<?php
/*template name: Cron*/

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

但我从来没有收到过电子邮件,所以我认为它不起作用。我宣布我的cron工作的方式有什么问题吗?此外,我还没有禁用WordPress Cron系统,就像我看到的很多教程一样。这是让我自己的cron工作所必需的吗?

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

define('DISABLE_WP_CRON', true);

您的问题是,即使您的文件实际位于主题文件夹中,它也会实际运行"外部";wp-core ENV,因为您直接调用它。如果你问我,在WP生态系统中使用外部cron系统的最好、最简单、最干净的方法是这样做:

add_action( 'wp_ajax_nopriv_my_cron_action', array( 'myCronAction' ) );
function myCronAction(){
//...your code
}

通过这种方式,您可以使用WP-ajax端点进入WP生态系统。要小心安全性,因为这样你就暴露了一个cronurl来做你的事情。确保这一点取决于你,但这是实现这一点的最简单方法。

要从你的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-to-use-wordpress-functions-outside-wordpress-files

首先检查脚本是否从cli/webhook运行。然后请检查cli的执行情况,因为可能存在php不在服务器的PATH中的情况,并且您必须调用php的完整路径,例如:

/usr/local/bin/php /home/your_username/public_html/path/to/cron/script.php

最新更新