Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将大型脚本拆分为较小的批_Php_Magento_Logic - Fatal编程技术网

Php 将大型脚本拆分为较小的批

Php 将大型脚本拆分为较小的批,php,magento,logic,Php,Magento,Logic,我为magento商店编写了一个脚本,它的目的是填充一个.txt文件,然后由Google Merchant Center读取 脚本功能正常,但是magento存储在一个糟糕的主机上,每个PHP实例只允许256MB的内存。这是无法更改的,因此我看到的唯一解决方案是将脚本分解,使其一次只处理几个产品,每隔几分钟作为cron作业运行一次 不过,我正在努力想出一种有效的方法。我可以限制我选择的产品数量,但下次脚本运行时,它将不知道哪些添加到了.txt,哪些没有 感谢您的帮助。一个简单但可能有点脏的解决方

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

脚本功能正常,但是magento存储在一个糟糕的主机上,每个PHP实例只允许256MB的内存。这是无法更改的,因此我看到的唯一解决方案是将脚本分解,使其一次只处理几个产品,每隔几分钟作为cron作业运行一次

不过,我正在努力想出一种有效的方法。我可以限制我选择的产品数量,但下次脚本运行时,它将不知道哪些添加到了.txt,哪些没有


感谢您的帮助。

一个简单但可能有点脏的解决方案可以是在products表中添加一个简单的“checkbox”列,或者有一个只包含两列(产品Id和时间戳)的额外表。 然后可以使用时间戳按顺序排序并限制获取的行数

select productId, lastProcessed from productProcess order by lastProcessed asc limit 0,<whatever your limit>
选择productId,按最后处理的asc限制0从productProcess订单中最后处理,
然后,在处理每一行时,可以使用NOW()更新lastProcessed列。 如果您不想连续处理产品,可以在处理后使用复选框列进行标记,然后在特定时间清除所有“复选框”

它增加了加工时间,但这样你就可以确定你已经加工了哪些产品


这些只是几个变体,您可以在此基础上提出其他解决方案。

一个简单但可能有点脏的解决方案可以是在products表中添加一个简单的“checkbox”列,或者有一个只包含两列(产品Id和时间戳)的额外表。 然后可以使用时间戳按顺序排序并限制获取的行数

select productId, lastProcessed from productProcess order by lastProcessed asc limit 0,<whatever your limit>
选择productId,按最后处理的asc限制0从productProcess订单中最后处理,
然后,在处理每一行时,可以使用NOW()更新lastProcessed列。 如果您不想连续处理产品,可以在处理后使用复选框列进行标记,然后在特定时间清除所有“复选框”

它增加了加工时间,但这样你就可以确定你已经加工了哪些产品


这些只是几个变体,您可以在此基础上提出其他解决方案。

为什么不只计算txt文件中的行数并将其用作偏移量?为什么不只计算txt文件中的行数并将其用作偏移量?