【问题标题】:Wordpress - run function at a specific time of a dayWordpress - 在一天中的特定时间运行功能
【发布时间】:2019-01-05 17:16:22
【问题描述】:

我已经尝试过这个解决方案,但我无法让它工作:

Run function at specific time

这是我的例子:

//this is for testing purposes
function my_cron_schedules($schedules){
if(!isset($schedules["1min"])){
    $schedules["1min"] = array(
        'interval' => 60,
        'display' => __('Once a minute'));
}

return $schedules;
}
add_filter('cron_schedules','my_cron_schedules');

if ( ! wp_next_scheduled( 'my_scheduled_event' ) ) { wp_schedule_event( 
strtotime( '2019-01-04 19:39:00' ), '1min', 'my_scheduled_event' ); }

add_action( 'my_scheduled_event', 'update_ratings' );

function update_ratings() { 
//do some stuff..
}

【问题讨论】:

  • 作为记录,您链接的答案指出“此外,需要了解 wp_cron 是由页面加载触发的,因此如果您的网站没有大量流量,那么该功能将不会” t 在定义的时间精确触发。不过有解决方法。换句话说,这实际上不是由 cron 本身触发的,而是通过加载相关页面来触发的。除非有人在计划间隔过后访问该页面,否则这不会运行。
  • 如果您想保证每分钟触发一次预定的事件,您将不得不在服务器上实际启用 cron 本身并编辑 crontab。 PHP 绝对无法自行处理。任何纯粹基于 PHP 的解决方案都需要手动运行 PHP 脚本。您当前的解决方案需要定期的网络流量。
  • 感谢您的回答。我已经测试过了,但它不起作用。 1 分钟时间表仅用于测试目的。我最初的计划是每天在特定时间安排一次。
  • 间隔是1分钟还是1天都没有关系。问题是,即使您正确安排了代码,它也不会运行,除非有人手动触发脚本运行。如果您希望脚本在该时间运行,则需要有人在您希望脚本运行的确切时间访问该页面。你无法解决这个问题。这是一个内置的限制。唯一的解决方法是编辑服务器的crontab
  • 要么是人需要触发脚本,要么是机器需要触发。如果需要,您可以在另一台机器上设置一个 cron 作业,以便在计划时间访问特定页面。那会奏效。但是你不能让它只用 PHP 单独运行。

标签: php wordpress cron


【解决方案1】:

问题出在计划的 cron 作业中。在测试时,我之前已经为同一个钩子设置了 cron 作业。在检查了 cron 作业后,我设法删除了该测试计划,现在它正在运行。

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2011-03-14
    相关资源
    最近更新 更多