J'ai découvert que j'avais 29 000 tâches cron dans ma base de données WordPress à partir de plugins désactivés et supprimés. J'ai essayé un certain nombre de plugins d'optimisation mais le grand nombre de tâches cron signifie que je ne peux pas les supprimer à l'aide de plugins.
J'ai également essayé ceci dans mon functions.php sans succès:
add_action("init", "clear_crons_left");
function clear_crons_left() {
wp_clear_scheduled_hook("cron_name");
}
Existe-t-il une commande SQL que je peux utiliser dans phpmyadmin pour rechercher par cron hook et les supprimer?
Réponses:
Merci Privateer pour la réponse rapide et les conseils.
J'ai trouvé un moyen de le contourner avant de voir votre réponse. Voici une méthode étape par étape pour supprimer des milliers d'anciens travaux cron et peut être utile à quelqu'un d'autre.
Je me suis connecté à phpMyAdmin. J'ai cliqué sur ma base de données puis sur l'onglet «recherche». J'ai tapé «cron» puis sélectionné «toutes les tables» et cliqué sur «Aller». J'ai fait défiler la liste des résultats de la recherche jusqu'à ma table wp_options. J'ai cliqué sur «Parcourir». En haut de la liste se trouvait l'option_name 'cron'. J'ai cliqué sur «Modifier», puis j'ai attendu que la page se charge. J'ai cliqué sur la case qui montrait la liste des tâches cron. La liste cron était si longue qu'il a fallu environ 80 secondes pour que mon curseur réponde. J'ai ensuite utilisé Ctrl-A sur le clavier pour tout sélectionner avant d'appuyer sur le bouton Supprimer. Il a fallu environ 2 minutes avant que mon navigateur ne termine la suppression (délai d'expiration de chrome, j'ai donc essayé Firefox qui fonctionnait).
Après quelques minutes, les tâches cron pour mes plugins actifs actuels ont rempli à nouveau la liste. Il y avait 9 emplois cron (contre plus de 29 000!). Six ans de tâches cron en double à partir de plugins mal codés, dont certains que j'ai juste installés pendant une journée pour essayer. Des centaines de plugins courants tels que Wordfence, BackupBuddy, Nextgen Gallery et AutoOptimizer - tous que j'avais désinstallés dans le passé. Mon site se charge maintenant comme s'il avait été turbo. La zone d'administration est beaucoup plus rapide. Les erreurs de délai d'attente administrateur ont disparu. J'avais passé tellement de temps à optimiser mon site Web en essayant de réduire le temps de chargement. J'ai même déplacé des hôtes et mis à jour mes plans d'hébergement. Rien n'a augmenté la vitesse de mon site comme la suppression de toutes les tâches cron obsolètes. Le temps de téléchargement mobile est passé de 20 secondes à 6 secondes.
Dans ma recherche d'une solution, j'ai trouvé très peu d'informations sur l'effet des tâches cron sur les performances du site Web. Beaucoup ont dit que cela faisait peu de différence et c'est vrai pour un petit nombre de tâches cron. Mais des années dans la vie d'un site WordPress, je me demande combien sont remplis de centaines, voire de milliers d'anciens travaux cron provenant de plugins supprimés. Au lieu de demander aux utilisateurs de vérifier leur limite de mémoire php, je suggère que les développeurs demandent d'abord aux utilisateurs de vérifier le nombre de tâches cron dans wp_options lors de la résolution d'erreurs fatales de la mémoire. Vous pourriez être surpris / choqué par ce que vous trouverez! :-)
la source
Essayer
Si vous le trouvez, vous pouvez essayer:
UPDATE wp_options SET option_value = '' WHERE option_name = 'cron'
update_option('cron', '');
Vous devrez peut-être supprimer l'option cron ou définir la valeur sur un tableau sérialisé vide.
Utiliser update_option serait plus sûr car je ne suis pas certain si la valeur doit être un tableau vide sérialisé ou une chaîne vide. Vous pouvez cependant archiver wp-includes / options.php ... mais l'utilisation de update_option le traitera correctement sans se soucier de la base de données.
la source
Les événements cron de Wordpress peuvent également être effacés de la ligne de commande, en utilisant WP-CLI :
Plus de détails dans les documents wp-cli .
la source
wp option delete cron
wp option delete cron
fonctionne quand il y a des milliers de tâches cron bourrées dans les options. Ces mauvais travaux proviennent principalement de mauvais plugins, faisant du cron dans le mauvais sens.Une solution encore plus simple consiste à appeler
delete_option( 'cron' );
une fois dans un plugin. Tous les travaux cron ajoutés automatiquement seront à nouveau ajoutés lors de la prochaine visite / demande de votre site.En tant que plugin à un cas (mu) qui ne s'exécute que lorsque vous l'activez:
la source
Au cas où quelqu'un voudrait effacer un nom de cron spécifique (disons 'CRON_NAME'), cette solution a fonctionné pour moi:
la source
J'ai eu une année pleine de tâches cron en attente, environ 5 Mo de données pour cette seule entrée de base de données. Suppression des tâches cron de la base de données. Tâches cron désactivées dans wp-config.php
Configurer une tâche cron manuelle dans cpanel. Maintenant, mon site vole littéralement. J'avais mis à niveau les serveurs, acheté plus de CPU / RAM, mais tout était une perte d'argent et de temps.
Pour supprimer tous les travaux cron en attente, exécutez cette requête dans phpmyadmin> Exécuter la requête:
Merci beaucoup Pádraig Ó Beirn.
la source
Si vous effacez vos tâches cron de cette façon et que vous utilisez UpdraftPlus, vous devrez réenregistrer vos paramètres afin de régénérer les tâches cron. Jusqu'à ce que vous le fassiez, vos sauvegardes automatisées ne s'exécuteront pas (mais les sauvegardes manuelles le seront).
Les paramètres seront toujours là et vous n'avez rien à modifier. Accédez simplement à [Menu supérieur UpdraftPlus] -> Paramètres, faites défiler vers le bas et cliquez sur "Enregistrer les modifications".
la source
Je suis arrivé ici à cause de l'énorme quantité de
sm_ping
cronjobswp_options
. Si tel est votre problème, vous pouvez essayer ce qui suit:Mettez ceci dans functions.php (thème enfant) si vous n'avez pas accès à phpmyadmin, surtout si votre site est gonflé de ping cronjobs (sm_ping):
la source
J'ai rencontré un problème similaire, où en raison d'une de mes propres erreurs de codage, des milliers de copies d'une tâche cron particulière avaient été ajoutées à un site. La fonction wp_clear_scheduled_hook a semblé expirer et échouer. Je l'ai contourné avec un script qui annule toutes les instances de la fonction cron dans le tableau, puis ajoute le tableau filtré comme nouvelle option cron dans le tableau des options. Voir ci-dessous.
De cette façon, j'ai évité de supprimer les tâches cron souhaitables précédemment ajoutées au site.
Cela pourrait être modifié comme une fonction qui prend un tableau de poignées à éliminer ou un tableau de poignées à conserver.
la source
J'ai un moyen très simple de supprimer tous les événements cron. Avant, vous devez DÉSACTIVER WP Cron dans wp-config Ensuite, vous installez Plugin WP Control Ensuite, allez dans le menu Outils> Événements Cron> Cliquez sur Tout choisir> Supprimez tous. Pourriez-vous l'essayer. Merci.
la source