代码之家  ›  专栏  ›  技术社区  ›  JasonGenX

Wordpress:wp_create_category可能需要20秒才能完成

  •  0
  • JasonGenX  · 技术社区  · 6 年前

    我继承了 PHP 以及wordpress项目,其中术语(分类法='category')用于记录系统中的每个数据点。术语表中有30000多行。是的,我知道-这是一个疯狂的决定,但我没有做到我只是被它困住了。

    我有一个脚本,试图修复几百个帖子。修复程序需要我使用 wp_create_category ,和 wp_set_post_categories . 我的问题是速度似乎每一个电话 创建类别 更新某种缓存,或者从头开始重新加载/重新写入所有内容。我无法解释为什么每次通话需要20-30秒才能完成。

    除了使用术语来存储系统中每个数据点的明显错误…我做什么错了,让那些慢速度?

    有没有办法在运行几百个之前“禁用”某些东西 创建类别 wp_set_post_类别 那会让我的生活不再是一个等待的地狱?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Dylan Brams    6 年前

    我不是wp专家,我的专长是更多的数据库。也就是说,这看起来像是一个数据库(或与数据库的交互)问题。

    我的猜测是,直接查看wp构建的数据库并更有效地导入类别,可以更好地为您服务。类别插入到以 Create Category 我是说, moves to insert category , and finally seems to insert a term. (注意三个独立的链接,带有源代码) WordPress Codex 有一个数据库图表,其中显示了一系列附属表中的“术语”到posts。

    因此,如果直接插入一个术语并找到要模拟的结构/数据信息(我建议在wp_termmeta和wp_term_taxonomy中重新创建或链接到适当的信息),那么最终将以指数级的速度完成过程。

    另一个选择是让你的代码正确,开始运行,然后回家过夜。这可能实际上更简单。

        2
  •  0
  •   Raja Mohammed    6 年前

    WpCCREATETIOR类别检查该项是否在执行插入操作之前存在。因此,在您的情况下,如果您有3万行的条款,并没有适当的索引,这将对您的性能有一些影响。您可以优化和重新索引数据库,如果仍然无效,并且如果确定要插入唯一类别,请再次测试,然后尝试调用 wp_insert_category( array('cat_name' => $cat_name, 'category_parent' => $parent) );