大容量插入帖子非常慢,并且会跳过条目

时间:2015-04-20 作者:Bernhard Punz

我正在编写一个插件,用NewsML标准解析一组XML文件,并将它们作为自定义帖子类型插入数据库。一切正常,如预期的那样,但特别是在插件第一次激活时,有许多文件需要导入,这需要很长时间。我说的是多达2000个文件。

解析过程大约需要20-30秒,这对我来说还可以,但整个导入过程需要6分钟或更长时间,我认为提高执行时间限制不是最佳做法。

有时我的脚本会跳过执行时间限制后的所有文件,并显示一个空白页面,在我最后一次尝试时,我遇到了一个php错误,有时它会正常工作。(我假设它在未达到时间限制时工作)。

这是我在数据库中导入条目数组的代码。自从我6周前开始开发wordpress插件以来,我知道这不是你见过的最好的代码。https://gist.github.com/inrebinfo/0dba270e7fa1bca60a79

因此,我正在寻找一个有两个目标的解决方案:
1:不要跳过任何文件。我不知道如何绕过执行时间限制。(可能拆分阵列并导入单个部件?)
2:加快进程。20秒的解析时间还可以,但在我看来,插入时间太长了。

我很乐意得到任何建议和提示。

1 个回复
SO网友:Jeremy Chinquist

队列可能是您的解决方案。

应该导入的各个项目可以放入队列(例如,在数据库表中),然后在WP Cron过程中逐个处理队列。

查看如何other plug-ins handle job queues

希望这有帮助。

结束

相关推荐

如何在需要时验证XML-RPC帖子的创建和取消?

我有一个IFTTT recipe 这会在某些情况下为我创建帖子,但出于某种奇怪的原因,它会创建三个,有时是四个内容相同的帖子。我想添加一个add_action 钩住/回调以验证新帖子的内容,如果已经存在,则取消该帖子,或将其移动到垃圾桶或类似的地方。我找到了xmlrpc_prepare_post 但我想我不能从那里取消它。除非我可以更新某些属性并将其设置为垃圾?Update.我尝试了以下操作,它只会进入xmlrpc\\u调用,而不会进入xmlrpc\\u wp\\u insert\\u post\\u m