我正在使用wp all import wordpress插件从csv文件将帖子导入我的wordpress博客。该文件有超过10000个帖子,问题是随着数据库大小的增加,插件发布变慢或者如果发布大约1000个帖子,发布的帖子数量减少到流程开始时的1/4。
是否可以防止插件重复检查?
或者我可以将从wordpress数据库读取的数据限制为100个帖子而不是读取1000个帖子吗?
答案 0 :(得分:7)
似乎您的服务器正在努力,因为此操作是资源密集型的。在您的数据库中发送所有这些SQL查询肯定会减慢服务器中的速度。 你可以尝试一些事情,看看它是否有帮助。
do_action
答案 1 :(得分: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条记录 - 我故意取消了它。
后应用过滤器: 10分37秒 - 27%~27,000 记录
总运行时间最终成为: 36分23秒 - 100%100,000 记录。
所以对我而言,它节省了很多时间。
答案 2 :(得分:1)
随着时间的推移这种放慢是一个已知的问题,plugin website会记录一个解释,下面再现了最相关的部分。
将文件拆分成块是减少WP量的有用方法 导入过程结束时,所有导入速度都会降低。
减速的原因部分是因为WP All Import必须 稍后在导入过程中进一步阅读该文件。在每一个上 迭代,“文件指针”被重置。
[...]在后期迭代期间,例如,导入记录15000时 - 16000,WP All Import必须在其前面的文件中读取15000条记录 甚至可以开始导入数据。
将文件拆分成块会阻止这种减速 - 但需要付出代价 - 它必须在您的服务器上临时创建许多新文件。
[...] 不可能完全消除减速,因为你的 数据库变大,您的服务器和WP All Import必须做得更多 工作
您提到的有关重复项的示例。
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
”上方)并输入*/
以结束块注释。这将阻止导入过程检查重复的帖子,并且应该使用大量导入来加速它。这已经过验证,不会在最新版本的免费插件上造成任何错误(除非出现明显的重复),但我没有足够大的数据集来测试任何可靠的性能提升。
值得注意的是,这是一个“黑客”,所做的更改将在插件的任何更新中恢复,并且不应被视为稳定修复。