gpt4 book ai didi

wordpress - wp_cron 计划但未触发

转载 作者:行者123 更新时间:2023-12-05 08:11:59 25 4
gpt4 key购买 nike

我正在尝试使用 wp_schedule_single_event 运行在用户操作时触发的后台脚本,虽然我已经确认事件正在安排中并且 wp_cron 认识到预定的时间已经过去,但它不会触发事件处理程序。更复杂的是,代码在我安装的本地 WP 上运行良好,但在我的服务器上什么也不做。

要安排事件,我正在使用:

if ( ! wp_next_scheduled( 'my_action_name' ) ) {
wp_schedule_single_event( time(), 'my_action_name' );
}

我的处理程序操作定义为:

add_action('my_action_name', 'my_action_handler');
function my_action_handler () {
// do stuff
}

我测试了 wp 核心文件,发现以下 block (来自 wp-includes/cron.php:322)是脚本终止的地方:

var_dump('test1');
$cron_request = apply_filters( 'cron_request', array(
'url' => add_query_arg( 'doing_wp_cron', $doing_wp_cron, site_url( 'wp-cron.php' ) ),
'key' => $doing_wp_cron,
'args' => array(
'timeout' => 0.01,
'blocking' => false,
/** This filter is documented in wp-includes/class-wp-http-streams.php */
'sslverify' => apply_filters( 'https_local_ssl_verify', false )
)
), $doing_wp_cron );
var_dump('test2'); //exit here to test
wp_remote_post( $cron_request['url'], $cron_request['args'] );

在我的本地机器上,应用过滤器,打印'test2',脚本可以继续调用wp_remote_post。然而,在服务器上,脚本在 apply_filter('cron_request') 执行期间终止,打印 'test1' 但不打印 'test2' 并且无法到达 wp_remost_post。

我一直无法找到这个过滤器的源代码来进一步调试。 Wordpress.org 说过滤器是在 wp-includes/cron.php 中定义的,我已经引用的一个实例是唯一应用过它的地方,但是,使用 Sublime 多文件搜索显示字符串 'cron_request'仅出现在我引用的过滤器应用程序中。

我读过很多关于 wp_cron 失败的帖子,除了非描述性的“服务器配置阻塞 wp_cron”答案外没有找到任何帮助。有关服务器配置类型或此处可能发生的其他情况的任何其他信息?

最佳答案

如果预定时间已过,当有人访问您的 WordPress 网站时将触发此操作。

也许你可以使用

wp_schedule_event()

代替

 wp_schedule_single_event()

关于wordpress - wp_cron 计划但未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com