Pregunta sobre Arreglando WordPress de Wordpress:

Problema de wp-cron.php

Un usuario pregunt贸 馃憞

Hola,
Hace alg煤n tiempo encontr茅 un error de operaciones cron.

mensaje de registro de errores 芦[16-May-2019 17:00:09 UTC] Advertencia de PHP: argumento no v谩lido proporcionado para foreach () en /home/******/public_html/sabundanhayaller.com/wp-cron.php online 111 鈥

Hice todos los pasos aqu铆 芦https://www.inmotionhosting.com/support/website/wordpress/disabling-the-wp-cronphp-in-wordpress 鈥;

sigue recibiendo el mismo mensaje. que crees que puedes hacer

(@ alegremente)

Hace 1 a帽o, 8 meses

Los pasos en esa p谩gina lo desactivan en un lugar y lo llaman en otro lugar, as铆 que no veo c贸mo eso le ayudar铆a si la funci贸n est谩 obteniendo datos incorrectos. La l铆nea de c贸digo utiliza los datos guardados para los eventos programados. Aparentemente, detalles incorrectos en el evento programado. 驴Tiene alg煤n plugin que establezca recordatorios o haga cosas m谩s tarde?

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

wordfence, jetpack Estoy usando un plugin

La secuencia del archivo contiene toda la l铆nea de c贸digo que da el error.


f ( $doing_cron_transient != $doing_wp_cron ) {
	return;
}

foreach ( $crons as $timestamp => $cronhooks ) {
	if ( $timestamp > $gmt_time ) {
		break;
	}

	foreach ( $cronhooks as $hook => $keys ) {

		foreach ( $keys as $k => $v ) {

			$schedule = $v['schedule'];

			if ( $schedule != true ) {
				$new_args = array( $timestamp, $schedule, $hook, $v['args'] );
				call_user_func_array( 'wp_reschedule_event', $new_args );
			}

			wp_unschedule_event( $timestamp, $hook, $v['args'] );

foreach ($ cronhooks como $ hook => $ claves)

esta l铆nea 111

Esta respuesta fue modificada hace 1 a帽o, 8 meses por.

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

foreach ($ cronhooks como $ hook => $ claves)

esta l铆nea 111

(@autotutorial)

Hace 1 a帽o, 8 meses

foreach solo funciona con matrices de cualquier otra versi贸n de datos de advertencia. Algunas de estas caracter铆sticas se introdujeron en la versi贸n 5.1 de wordpress, lo siento, no puedo entender qu茅 est谩 mal.

(@designsmoke)

Hace 1 a帽o, 8 meses

@batuhanguldemir eso significa que algo est谩 proporcionando datos no v谩lidos al ciclo $ cronhooks; sospecho que es uno de sus plugins.

Puede intentar depurar esto y averiguar qu茅 es agregando esto antes de la l铆nea 111:
error_log(print_r($cronhooks, TRUE));

Esto registrar谩 todos los enlaces cron en el registro de errores; luego podr谩 ver cu谩l se imprime antes de que ocurra el error.

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

谋 tienes 7 plugins (akismet, cloudflare, jetpack, -login-tries-reload, sucuri-scanner, w3-total-cache, wordfence)

Intentar茅 desactivarlos a todos

(@designsmoke)

Hace 1 a帽o, 8 meses

@batuhanguldemir 驴Se ha actualizado W3 Total Cache? Podr铆a ser una fuente.

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

@designsmoke No soy muy experto en esto, la configuraci贸n de mi plugin es como aqu铆.
https://bloggingwizard.com/w3-total-cache-cloudflare/

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

Detalles del registro de errores @designsmoke

[16-May-2019 20:41:04 UTC] Advertencia de PHP: argumento no v谩lido proporcionado para foreach () en /home/xxxxxxx/public_html/wp-cron.php en l铆nea 111
[16-May-2019 20:41:04 UTC] Editar (
[recovery_mode_clean_expired_keys] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => diario
[args] => Editar ()

[interval] => 86400)

)

[jetpack_clean_nonces] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => por hora
[args] => Editar ()

[interval] => 3600)

)

)

[16-May-2019 20:41:04 UTC] Editar (
[jetpack_sync_cron] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => jetpack_sync_interval
[args] => Editar ()

[interval] => 300)

)

[jetpack_sync_full_cron] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => jetpack_sync_interval
[args] => Editar ()

[interval] => 300)

)

)

[16-May-2019 20:41:07 UTC] Editar (
[wp_privacy_delete_old_export_files] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => por hora
[args] => Editar ()

[interval] => 3600)

)

[wp_version_check] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => dos veces al d铆a
[args] => Editar ()

[interval] => 43200)

)

[wp_update_plugins] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => dos veces al d铆a
[args] => Editar ()

[interval] => 43200)

)

[wp_update_themes] => Editar (
[40cd750bba9870f18aada2478b24840a] => Editar (
[schedule] => dos veces al d铆a
[args] => Editar ()

[interval] => 43200)

)

)

(@designsmoke)

Hace 1 a帽o, 8 meses

@batuhanguldemir 驴Tiene la tarea cron que sucedi贸 antes de la advertencia?

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

@designsmoke que yo sepa. acceso remoto jetpack y wordfence disponible

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

@designsmoke todo el c贸digo de la p谩gina cron aqu铆

<?php
/**
 * A pseudo-CRON daemon for scheduling WordPress tasks
 *
 * WP Cron is triggered when the site receives a visit. In the scenario
 * where a site may not receive enough visits to execute scheduled tasks
 * in a timely manner, this file can be called directly or via a server
 * CRON daemon for X number of times.
 *
 * Defining DISABLE_WP_CRON as true and calling this file directly are
 * mutually exclusive and the latter does not rely on the former to work.
 *
 * The HTTP request to this file will not slow down the visitor who happens to
 * visit when the cron job is needed to run.
 *
 * @package WordPress
 */

ignore_user_abort( true );

/* Don't make the request block till we finish, if possible. */
if ( function_exists( 'fastcgi_finish_request' ) && version_compare( phpversion(), '7.0.16', '>=' ) ) {
	fastcgi_finish_request();
}

if ( ! empty( $_POST ) || defined( 'DOING_AJAX' ) || defined( 'DOING_CRON' ) ) {
	die();
}

/**
 * Tell WordPress we are doing the CRON task.
 *
 * @var bool
 */
define( 'DOING_CRON', true );

if ( ! defined( 'ABSPATH' ) ) {
	/** Set up WordPress environment */
	require_once( dirname( __FILE__ ) . '/wp-load.php' );
}

/**
 * Retrieves the cron lock.
 *
 * Returns the uncached <code>doing_cron</code> transient.
 *
 * @ignore
 * @since 3.3.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @return string|false Value of the <code>doing_cron</code> transient, 0|false otherwise.
 */
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;
}

$crons = wp_get_ready_cron_jobs();
if ( empty( $crons ) ) {
	die();
}

$gmt_time = microtime( true );

// The cron lock: a unix timestamp from when the cron was spawned.
$doing_cron_transient = get_transient( 'doing_cron' );

// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
if ( empty( $doing_wp_cron ) ) {
	if ( empty( $_GET['doing_wp_cron'] ) ) {
		// Called from external script/job. Try setting a lock.
		if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time ) ) {
			return;
		}
		$doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
		set_transient( 'doing_cron', $doing_wp_cron );
	} else {
		$doing_wp_cron = $_GET['doing_wp_cron'];
	}
}

/*
 * The cron lock (a unix timestamp set when the cron was spawned),
 * must match $doing_wp_cron (the "key").
 */
if ( $doing_cron_transient != $doing_wp_cron ) {
	return;
}

foreach ( $crons as $timestamp => $cronhooks ) {
	if ( $timestamp > $gmt_time ) {
		break;
	}
error_log(print_r($cronhooks, TRUE));
	foreach ( $cronhooks as $hook => $keys ) {

		foreach ( $keys as $k => $v ) {

			$schedule = $v['schedule'];

			if ( $schedule != true ) {
				$new_args = array( $timestamp, $schedule, $hook, $v['args'] );
				call_user_func_array( 'wp_reschedule_event', $new_args );
			}

			wp_unschedule_event( $timestamp, $hook, $v['args'] );

			/**
			 * Fires scheduled events.
			 *
			 * @ignore
			 * @since 2.1.0
			 *
			 * @param string $hook Name of the hook that was scheduled to be fired.
			 * @param array  $args The arguments to be passed to the hook.
			 */
			do_action_ref_array( $hook, $v['args'] );

			// If the hook ran too long and another cron process stole the lock, quit.
			if ( _get_cron_lock() != $doing_wp_cron ) {
				return;
			}
		}
	}
}

if ( _get_cron_lock() == $doing_wp_cron ) {
	delete_transient( 'doing_cron' );
}

die();

(@autotutorial)

Hace 1 a帽o, 8 meses

if(!is_array($cronhooks)){
if(is_null($cronhooks)){
$cronhooks = (int) $cronhooks;
}
error_log(print_r($cronhooks, TRUE)."n");
}

Demuestre esto por sus errores 馃檪

(@batuhanguldemir)

Hace 1 a帽o, 8 meses

Busqu茅 mucho. Como no pude encontrar la respuesta, encontr茅 los siguientes c贸digos. 驴Crees que hay alg煤n problema?

	foreach ( $cronhooks as $hook => $keys ) {

		foreach ( $keys as $k => $v ) {

			$schedule = $v['schedule'];

			if ( $schedule != true ) {
				$new_args = array( $timestamp, $schedule, $hook, $v['args'] );
				call_user_func_array( 'wp_reschedule_event', $new_args );
			}

			wp_unschedule_event( $timestamp, $hook, $v['args'] );

			/**
			 * Fires scheduled events.
			 *
			 * @ignore
			 * @since 2.1.0
			 *
			 * @param string $hook Name of the hook that was scheduled to be fired.
			 * @param array  $args The arguments to be passed to the hook.
			 */
			do_action_ref_array( $hook, $v['args'] );

			// If the hook ran too long and another cron process stole the lock, quit.
			if ( _get_cron_lock() != $doing_wp_cron ) {
				return;
			}
		}
	}

(@autotutorial)

Hace 1 a帽o, 8 meses

s铆, seguro que hay un problema, pero el registro que public贸 es correcto, use mi c贸digo ya que foreach solo advierte si no est谩 editado $ cronhooks

驴Solucion贸 tu problema??

0 / 0

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *