我继承了PHP
和Wordpress项目,其中的术语(分类法=“类别”)用于记录系统中的每个数据点。条款表中有30,000多行。是的,我知道-这是一个疯狂的决定,但我没有做到。我只是坚持下去。
我有一个特定的脚本,该脚本试图修复几百个帖子。该修复程序要求我使用wp_create_category
和wp_set_post_categories
。我的问题是速度。似乎每次对wp_create_category
的调用都会更新某种缓存,或者从头开始重新加载/重写术语中的所有内容。我无法解释为什么每次通话都需要20到30秒才能完成。
除了使用术语在系统中存储每个数据点的明显错误之外……要使这些速度慢,我在做什么呢?
在运行数百个wp_create_category
和wp_set_post_categories
之前是否有办法“禁用”某些东西,这会使我的生活不再是等待的地狱?
答案 0 :(得分:1)
我不是WP专家,我的强项是更多数据库。也就是说,这看起来像是数据库(或与数据库的交互)问题。
我的猜测是,直接查看WP是基于数据库构建的,并且可以更高效地导入类别,可以为您提供更好的服务。类别插入到以Create Category,moves to insert category,and finally seems to insert a term.开头的链中(请注意,三个单独的链接以及源代码)WordPress Codex的数据库图中显示了“职位的一系列卫星表格中的术语”。
因此,如果您直接插入一个术语并找到您想模仿的结构/数据信息(我建议在wp_termmeta和wp_term_taxonomy中重新创建或链接到适当的信息),那么您的处理过程将以指数级的速度结束。
另一种选择是正确编写代码,开始运行,并在某个晚上回家。这实际上可能更简单。
答案 1 :(得分:0)
wp_create_category在执行插入操作之前检查该术语是否存在。因此,就您而言,如果您有3万行的数据,并且索引不正确,则会对性能产生一些影响。您可以优化数据库并为其重新编制索引,然后再次测试是否仍然有效,并且确定要插入唯一的类别,然后尝试调用wp_insert_category( array('cat_name' => $cat_name, 'category_parent' => $parent) );