Delete transients in website

时间:2016-02-25 作者:Manu

我们在网站(WordPress和Woocommerce)错误日志上发生了很多错误,它将显示以下错误消息

试图获取锁时发现WordPress数据库错误死锁;尝试重新启动事务以从wp\\U选项中进行查询删除,其中选项名称(如“\\u transient\\u wpseo\\u sitemap\\u cache\\u shop\\u order\\u%”)或选项名称(如“\\u transient\\u timeout\\u wpseo\\u sitemap\\u cache\\u shop\\u order\\u%”)由require(\'wp-blog header.php\')、require\\u once(\'wp-includes/template loader.php\')、包括(“/主题/themename/template/template name.php”)、WC\\u Abstract\\u order->update\\u status,wp\\u update\\u post、wp\\u insert\\u post、clean\\u post\\u cache、clean\\u object\\u term\\u cache、do\\u action(\'clean\\u object\\u term\\u cache\')、call\\u user\\u func\\u数组、wpseo\\u invalidate\\u sitemap\\u cache\\u terms、wpseo\\u invalidate\\u sitemap\\u cache、wpseo\\u Utils::clear\\u sitemap\\u cache

但我不知道为什么会这样。我创建此模板用于特殊操作,但在该模板中我没有使用get_header(), get_footer()

_transient_wpseo_sitemap_cache_shop_order_% 是由yoast插件制作的,但我已经不遵循该页面的说明了

enter image description here

有人能说出这是什么原因吗?

另外,当我安装删除过期瞬态插件时,它会显示大量过期瞬态,有人能告诉我如果删除这个过期瞬态会发生什么吗?

为什么瞬态出现在我新创建的页面和模板中,即使我没有使用get_header(), get_footer() ?

如何在所选页面中禁用此未来?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

Transient在到期时并不总是被删除,这使得它们无法预测,有时甚至令人痛苦。每当我处理瞬变时,我都会添加一些功能来在发生事情时删除瞬变,比如发布帖子时删除瞬变,或者更新帖子时删除瞬变,如果瞬变是为了保留帖子相关的数据。

删除旧的过期瞬态,即使是新创建的瞬态,也没有坏处。任何必要或必需的瞬态都将在下一页加载时重新创建。由于创建瞬态的成本有点高,如果一次删除并重新创建所有瞬态,可能会降低一页的加载速度。此后,一切应恢复正常

编辑。。。是否有任何选项可以禁用一个页面或选定页面中的所有瞬态

不,没有,那样做就是自杀。默认情况下,大多数设置的瞬态由WordPress完成。WordPress使用这些瞬态来保存昂贵操作的结果。这样,这些昂贵的操作(,这会降低页面加载速度)不需要在每次页面加载时都运行,而只需要每隔几天运行一次,这样可以节省大量资源。

正如我在评论中已经指出的,您可能对插件的瞬态集有问题,在这种情况下,您应该联系插件作者并提供相关的调试信息

SO网友:Mark Kaplun

这不是一个流行的观点,但如果没有对象缓存,应该避免IMO瞬态。

这里发生的事情(主要是猜测)是您同时有两次尝试写入选项表。我猜一个是插入,另一个是删除,两者都需要相同的资源,但一个阻止另一个控制它所需的所有资源,反之亦然,因此两者都不完成。

您可以尝试使用对象缓存来避免将瞬态保存到DB中,或者尝试为DB提供更多的电源,希望加快速度可以防止这种情况的发生。

相关推荐

Button to clear transients

我想在管理页面上添加一个按钮来清除我使用的瞬态。请参见下面的我的代码:<?php // If this file is called directly, abort. defined(\'ABSPATH\') or exit(); /* * Generate the admin page */ function advanza_direct_plugin_settings() { $form = new advanza_d