web-dev-qa-db-fra.com

Supprimer les transitoires dans le site Web

Nous avons tellement d'erreur se produire sur le journal des erreurs de site Web (WordPress et Woocommerce) et le message d'erreur suivant s'affiche

Erreur de base de données WordPress Deadlock trouvé lors de la tentative de verrouillage; essayez de relancer la transaction pour la requête DELETE FROM wp_options WHERE nom_option LIKE '_transient_wpseo_sitemap_cache_shop_order_%' OR nom_option LIKE '_transient_timeout_wpseo_sitemap_cache_shop_cache_order_% template-loader.php '), include ('/themes/themename/template/template-name.php '), clean_post_cache, clean_object wpseo_invalidate_sitemap_cache, WPSEO_Utils :: clear_sitemap_cache

Mais je ne sais pas pourquoi cela se passe. Je crée ce modèle pour une opération spéciale et, dans ce modèle, je n’utilisais pas get_header(), get_footer() etc.

Et _transient_wpseo_sitemap_cache_shop_order_% est créé par le plugin yoast, mais je ne suis déjà pas les instructions pour cette page

 enter image description here 

Quelqu'un pourrait-il dire quelle en est la raison?

De plus, lorsque j'installeDelete Expired Transientsplugin, il affichera un très grand nombre de transitoires expirés. Quelqu'un peut-il savoir ce qui se passe si je supprime ce transitoire expiré?

Pourquoi les transitoires viennent-ils dans ma page et mon modèle nouvellement créés, même si je n’ai pas utilisé get_header(), get_footer()?

Comment désactiver ce futur dans les pages sélectionnées?

1
Manu

Les éléments transitoires ne sont pas toujours supprimés lorsqu'ils expirent, ce qui les rend imprévisibles et parfois pénibles. Chaque fois que je travaille avec des passagers transitoires, j'ajoute une sorte de fonctionnalité permettant de supprimer les passagers transitoires, par exemple lorsque je supprime les voyageurs temporaires lors de la publication de messages ou que je les met à jour si le visiteur transitoire devait conserver des données liées aux messages.

Il n’ya aucun mal à supprimer les anciens transitoires expirés, pas même ceux qui viennent d’être créés. Tout transitoire nécessaire ou requis sera recréé lors du prochain chargement de page. La création de transitoires étant un peu plus coûteuse, le chargement d’une page peut être ralenti si vous supprimez et recréez tous les transitoires en une fois. Ensuite, tout devrait fonctionner à nouveau normalement

MODIFIER

... existe-t-il une option permettant de désactiver tous les éléments transitoires d'une page ou de pages sélectionnées?

Non, il n'y en a pas et ce serait un suicide. La plupart des transitoires définis sont effectués par défaut par WordPress. WordPress utilise ces transitoires pour enregistrer les résultats d'opérations assez coûteuses. De cette façon, ces opérations coûteuses ( qui ralentiront le temps de chargement de votre page ) ne doivent pas nécessairement s’exécuter à chaque chargement de page, mais seulement une fois tous les quelques jours, ce qui permet d’économiser beaucoup de ressources.

Comme je l'ai déjà indiqué dans un commentaire, vous avez probablement des problèmes avec les ensembles de transitoires de vos plugins. Dans ce cas, vous devez contacter les auteurs des plugins avec les informations de débogage appropriées.

1
Pieter Goosen

Ce n’est pas une opinion populaire, mais les transitoires IMO doivent être évités si vous n’avez pas de mise en cache d’objets.

Ce qui se passe ici (et c'est surtout une hypothèse) est que vous avez deux tentatives simultanées d'écrire dans la table d'options. Je suppose que l’un est un insert et que l’autre est supprimé et que les deux nécessitent les mêmes ressources, mais l’un empêche l’autre de prendre le contrôle de toutes les ressources dont il a besoin et vice-versa, et donc ne s’achève pas.

Ce que vous pouvez essayer, c’est d’utiliser la mise en cache d’objets pour éviter d’enregistrer les éléments transitoires dans la base de données, ou de donner à votre base de données plus de puissance dans l’espoir qu’en accélérant le processus, on éviterait cette situation.

0
Mark Kaplun