我使用wp_insert_post()函数在我的网站上批量发布新帖子。我已经在一周前开始了,一切都很快,每分钟平均有大约80个新帖子。日复一日,随着发布帖子数量的增加,函数每分钟发布的帖子的平均值下降。
现在我发布了超过10万篇帖子,平均每分钟发布了5篇新帖子。
我使用的功能非常简单:
// Gather post data.
$new_video = array(
'post_type' => 'video',
'post_title' => $title,
'post_status' => $status,
'post_author' => $author,
'post_date' => date("Y-m-d H:i:s"),
'post_date_gmt' => date("Y-m-d H:i:s"),
'post_category' => explode(',', $category),
'post_name' => $rand_video_id
);
// Insert the video into the database.
wp_insert_post( $new_video );
在插入后,我还设置了一些术语和一些帖子。通过在网上阅读,我找到了不同的解决方案,以提高wp_insert_post功能的速度,首先是这一个:
wp_defer_term_counting(false);
当然,这是一个很好的解决方案,可以不花时间来计算条款,但不幸的是我没有看到任何改进。
我还尝试清除该功能,并删除所有插入标签,自定义分类和元数据,但它没有速度效果。
有人有什么建议吗?谢谢
****问题已修复****
通过停用用于生成.xml站点地图的WP插件解决了这个问题 - 现在一切都恢复得非常快,每分钟新帖子的平均值又回到80.
答案 0 :(得分:0)
你需要像这样添加true,加上你也可以关闭评论计数,这也可以帮助加快速度。
wp_defer_term_counting( true );
wp_defer_comment_counting( true )
然后在完成输入后将它们设置为false。
wp_defer_term_counting( false );
wp_defer_comment_counting( false );
这些也需要高于具有wp_insert_post()
功能的代码,否则无法使用。
将这些设置为true,它应该有所帮助,有100K的帖子虽然有很多后台进程和数据库工作自然会减慢更新。接下来的事情是查看数据库中WP表的索引。正如您所拥有的那样优化它们非常重要。