PHP分解Magento Unicenta产品更新脚本中的每个循环

时间:2015-10-07 07:08:32

标签: php magento

我在Magento的扩展中有一个ForEach循环,它正在与我的共享主机MySQL服务器碰壁。脚本执行时间太长,MySQL服务器关闭连接。显然,我不能让托管平台增加超时,因为随着更多产品的添加,需要增加超时。我能看到的唯一可行的选择是拆分foreach循环。

这是功能:

$ps=Mage::getModel('unicentaopos/productstock');
$ps->loadProductHash();//load a hash of history
$ps->noImageProducts();//load products without images so that if change is detected we load them.

if (is_a($mode,'Mage_Cron_Model_Schedule')){
    $ps->configSim();
}else{
    $ps->configSim($mode);
}
$db=Mage::Helper('unicentaopos')->getUnicentaOposConnection();
$productsTable=Mage::Helper('unicentaopos')->getTableName(self::TABLE_PRODUCTS);
if (is_null($db))return false;
$sql="select * from `$productsTable`";
$rows=$db->query($sql);
if (is_null($rows)) return false;

foreach  ($rows as $row){
    $ps->getUnicentaProducts($row);
    $ps->doImage($row);
}
$ps->updateMagentoProducts();
return true;

现在该功能已启用了大量日志记录,并且从日志中我可以看出它在每次出错之前都会到达项目编号1017。目前有1088个产品/项目,但这个数字还会增长。我正在考虑拆分它,以便它每次处理的数据不超过500,进入数据库,然后从中断处继续进行另外500次,但是当它达到真正的结束时它会停止。任何人都可以帮我解决这个问题,我知道用几种语言编程,但这对我来说是完全陌生的。

0 个答案:

没有答案