大型数据的一次性脚本超时

时间:2017-06-16 作者:Sid

我正在使用WP运行优惠券网站。我有一个自定义主题,可以创建自定义的帖子类型“优惠券”&;这些优惠券的自定义分类“存储”和“类别”。我在这个网站上有大量的数据(5千家店铺和近5万张优惠券)。所以有时候我需要从这些优惠券中提取一些特定的数据。

我写了一个“一次性脚本”,我把它放在我的主题函数中。php并使用URL中的参数运行它。示例:这是我在函数中添加的代码。php

if ( isset($_GET[\'linkupdate\']) ) {
    add_action(\'init\', \'link_update\', 10);
}
function link_update() {
  // actions to perform
// actions to perform
   die;
}
然后我用“www.sitename.com/?linkupdate”URL运行这个。

这对于中小型数据量(1K存储的数据)来说运行得很好,但当获取超过2-3K存储的数据时,脚本超时。

我试过使用set_time_limit(0); 在我的代码开始执行之前,但它没有帮助。还有别的办法吗?

1 个回复
SO网友:Mark Kaplun

在生产站点上运行报告式任务只是一个错误。对于一个“小”的站点,您可以接受它,但站点越大,您就会遇到Web服务器体系结构、语言体系结构和框架体系结构的限制,它们都不是为处理CPU和内存紧张的任务而设计的。

突破这些限制的一个明显方法是下载DB并在本地PC上运行任何您想要的东西,这很可能比您的web服务器功能强大得多。

如果出于任何原因很难做到这一点,那么最好的办法可能是将报告生成与WP-CLI集成,并从服务器的命令行运行它(您确实有ssh访问权限,对吗?;)这样可以避免与Web服务器相关的限制,但如果它使用大量内存和CPU,则仍然可能会出现问题,因此您可能需要灵活地构造代码,将生成过程分为多个部分,而不是一次完成。

。。。。通过使用ajax的某种渐进式生成,可以实现分块。你能做到吗?取决于您是否可以将整个操作分解为大部分独立的块。

结束

相关推荐