我是wordpress的新手。我的网站一直在发布预定的帖子,但似乎因为没有流量而停止了。所以我禁用了wp default cron,并通过cPanel设置了cron作业。
via命令wget -q -O - http://1pm.today/wp-cron.php?doing_wp_cron
和usr/bin/curl --user-agent cPanel-Cron http://1pm.today/wp-cron.php?doing_wp_cron
但是运行wp cron。像这样的php似乎不会触发预定的post。
我甚至尝试从浏览器触发cron作业(不确定这是否正确)http://1pm.today/wp-cron.php?doing_wp_cron
但这些都不会触发发布任何预定帖子。像这样的cron作业应该发布计划发布吗?如果是这样的话,任何关于调试的建议都将不胜感激,我将尝试与技术支持部门合作,因为该站点位于共享主机上。
我在wp cron中添加了echo语句。php
function _get_cron_lock() {
global $wpdb;
$value = 0;
if ( wp_using_ext_object_cache() ) {
/*
* Skip local cache and force re-fetch of doing_cron transient
* in case another process updated the cache.
*/
$value = wp_cache_get( \'doing_cron\', \'transient\', true );
} else {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", \'_transient_doing_cron\' ) );
if ( is_object( $row ) )
$value = $row->option_value;
}
return $value;
}
if ( false === $crons = _get_cron_array() )
die();
$keys = array_keys( $crons );
$gmt_time = microtime( true );
echo "$keys[0] > $gmt_time";
if ( isset($keys[0]) && $keys[0] > $gmt_time )
die();
echo ":6c";
// The cron lock: a unix timestamp from when the cron was spawned.
$doing_cron_transient = get_transient( \'doing_cron\' );
echo "7";
输出为
1465529020 > 1465525264.31 without reaching ":6c"
所以它
die()
是因为
if ( isset($keys[0]) && $keys[0] > $gmt_time )
1465529020 > 1465525264.31
请问在哪里
$keys[0]
来自哪里?
我猜$key[0]
是第一个cron作业的时间戳,并且$gmt_time
是当前时间,如果$key[0]
是在将来,它应该中止。
我已经有很多“错过预定”的帖子,所以我正在努力更好地理解_get_cron_array()
但我不知道wp includes/cron中发生了什么。php。
看来_get_cron_array()
与中的cron有关wp_options
SELECT *
FROM `wp_options`
WHERE `option_name` LIKE \'%cron%\'
在这一点上,我甚至更加困惑,因为我无法弄清楚一个预定的帖子是如何链接到cron作业的。