我需要分解大量的记录,并且能够通过使用简单的lteq语句来提取前6000个,但我无法弄清楚如何提取另外的6k文件。
此代码似乎有效,但导致内存错误:
$filterData = array(
'product_id' => array(14001, 'to'=> 17000)
);
我需要制作一个循环:
$filterData = array(
'product_id' => array('lteq' => 6000)
);
以下是更多代码:
// get all my database products into an array
$products = $client->call($session, 'catalog_product.list', array($filterData));
然后转到下一个6001 - 12000的数组
有什么想法吗?
以下是正确的Magento / API / Soap / Filter调用:
$filterData = array(
'product_id' => array('from' => 6001, 'to' => 10000)
);
使用“from”和“to”来拉取介于两者之间的所有记录。
评论中的代码:
$client = new SoapClient($myDomain.'/api/?wsdl');
$session = $client->login($myAPILogin, $myAPIKey);
//some filter date to pass to the API - add more to filter your results further - see Magento API docs
//$filterData = array('type'=>'simple');
$filterData = array( 'product_id' => array('from' => 6001), array('to' => 7000) );
//get all my database products into an array
$products = $client->call($session, 'catalog_product.list', array($filterData));
答案 0 :(得分:0)
可能使用模数运算符?
答案 1 :(得分:0)
尝试设置:
ini_set('memory_limit', -1);
在致电$client->call()
之前,如果safe_mode
为On
,您需要更改php.ini
文件。
另一种解决方案是在SQL中使用LIMIT
/ TOP
并以较小的块处理记录。
答案 2 :(得分:0)
以下是正确的Magento / API / Soap / Filter调用:
$filterData = array(
'product_id' => array('from' => 6001, 'to' => 10000)
);
使用“from”和“to”来拉取介于两者之间的所有记录。