在wp-all-import wordpress插件中禁用重复的帖子检查

问题描述 投票:2回答:3

我正在使用wp all import wordpress插件从csv文件将帖子导入我的wordpress博客。该文件有超过10000个帖子,问题是随着数据库大小增加,插件发布变慢或者如果发布大约1000个帖子,发布的帖子数量减少到流程开始时的速率的1/4。

是否可以防止插件重复检查? 或者我可以将从wordpress数据库读取的数据限制为100个帖子而不是阅读1000个帖子吗?

php wordpress
3个回答
7
投票

看起来你的服务器正在努力,因为这个操作是资源密集型的。在你的数据库中发送所有这些SQL查询肯定会减慢服务器中的速度。你可以尝试一些东西,看看它是否有帮助。

  • 尝试将脚本拆分为块并在当时解析少量帖子(例如1000)。
  • 禁用do_action
  • 尝试增加php脚本的执行时间(这不太可能有所帮助,但如果没有什么有助于尝试)。
  • 使用DBMS(Mysql Workbench,PgAdmin等...)将sql文件备份直接导入数据库,并导入将db映射到帖子的xml文件。更多信息:

关于WP all import here

关于Wordpress backups here


2
投票

实际上有一个过滤器可以做到这一点。这种方式应该在插件更新时坚持下去。您不必使用当前所选答案中描述的“Hack”。

apply_filters('wp_all_import_is_check_duplicates', true, $this->id);

因此,您可以编写这样的函数来防止检查重复记录。将它添加到functions.php文件或插件中。

//My Custom FILTER to Disable checking for duplicates
add_filter('wp_all_import_is_check_duplicates', 'disable_check_dupe_func', 10,     2);

//My Custom FUNCTION to Disable checking for duplicates
function disable_check_dupe_func($truefalse, $thisid){
    $truefalse = false;
    return $truefalse;
}//disable_check_dupe_func($truefalse, $thisid){

我正在使用专业版,所以如果这个过滤器不在免费版上,我会改变答案。

这是我的结果。我的文件中有100,000条记录。我没有必要检查重复项。在应用此过滤器之前,请确保您了解此含义。

在应用过滤器之前:18分36秒 - 25%~25,000条记录 - 我故意取消了它。

enter image description here

应用过滤器后:10分37秒 - 27%~27,000条记录

10 minutes 37 seconds - 27% ~27,000 records

总运行时最终为:36分23秒 - 100%100,000记录。 enter image description here

所以对我来说它节省了很多时间。


1
投票

The problem

随着时间的推移这种减速是一个已知的问题,并且在plugin website上记录了解释,下面再现了最相关的部分。

将文件拆分为块是一种有用的方法,可以减少WP All Import在导入过程结束时减慢的速度。

减速的原因部分是因为WP All Import必须在导入过程中稍后进一步读入该文件。在每次迭代时,“文件指针”被重置。

[...]在后期迭代期间,例如,当导入记录15000-16000时,WP All Import必须在文件中读取15000条记录才能开始导入数据。

将文件拆分为块可以防止这种速度降低 - 但需要付出代价 - 它必须在服务器上临时创建许多新文件。

[...]不可能完全消除减速,因为随着数据库变大,您的服务器和WP All Import必须做更多工作。

你提到的关于重复的例子。

Solutions

do_action

如上所述,将导入文件拆分为块将有助于缓解速度下降。

链接页面还描述了插件设计为在不调用do_action的情况下运行,并且建议禁用此插件,只要没有其他插件或进程需要使用它。

...我们在没有任何do_action调用的情况下创建了此函数的一个版本,选中此框将使WP All Import使用我们自定义的wp_insert_post函数,而不是WordPress提供的默认函数。

提到的复选框位于导入步骤4中“配置高级设置”标题下。

禁用重复的帖子检查

我无法找到设置值来执行此操作,因此不得不求助于编辑插件的源代码来完成此操作。

打开文件/wp-content/plugins/wp-all-import/models/import/record.php并搜索“// if Auto Matching re-import option selected”,它应该是第739行,然后输入/*从它上面的行开始一个块注释。然后向下滚动到第807行(在“// Duplicate record is founded”上方)并输入*/以结束块注释。这将阻止导入过程检查重复的帖子,并且应该使用大量导入来加速它。这已被证实不会在最新版本的免费插件中引起任何错误(除非出现明显的重复),但我没有足够大的数据集来测试任何可靠的性能提升。

值得注意的是,这是一个“黑客”,所做的更改将在插件的任何更新时恢复,并且不应被视为稳定修复。

© www.soinside.com 2019 - 2024. All rights reserved.