将大型脚本分成更小的批次

时间:2012-02-06 14:29:51

标签: php magento logic

我为magento商店编写了一个脚本,其目的是填充.txt文件,然后由Google Merchant Center读取。

该脚本正常运行,但是magento商店托管在一个糟糕的主机上,每个PHP实例只允许256MB。这是无法更改的,因此我能看到的唯一解决方案就是打破脚本,这样它每隔几分钟就可以一次处理几个产品,作为cron作业运行。

尽管如此,我仍在努力想出一种有效的方法。我可以限制我选择的产品数量,但是下次脚本运行时它不会知道添加到.txt中的内容以及没有添加的内容。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

一个简单但可能稍微脏的解决方案可能是在产品表中添加一个简单的“复选框”列,或者只有两列,即产品ID和时间戳。 然后,您可以使用时间戳来排序并限制提取的行数。

select productId, lastProcessed from productProcess order by lastProcessed asc limit 0,<whatever your limit>

然后,当您处理每一行时,您可以使用NOW()更新lastProcessed列。 如果您不想继续处理产品,可以使用复选框列标记处理时间,然后在特定时间清除所有“复选框”。

它增加了处理时间,但这样您就可以确定您已经处理了哪些产品。

这些只是几种变体,您可以基于此提出其他解决方案。