我有一个产品出口,我尝试使用我的自定义插件导出所有对象。我使用下面的方法来加载所有对象
$list = new Pimcore_Model_Object_Bodproduct();
$list->setOrder ( "ASC" );
$list->setOrderKey ( "o_id" );
// Load all filtered objects - products
$list->load ();
然后我使用foreach循环访问对象。
工作得很好。但问题是出口要花很多时间。有其他的解决办法吗?我的意思是,除了load()
函数,还有其他的方法吗?
您可以使用$list->loadIdList()
只获取对象id -这应该更快。然后你可以在循环中调用Object::getById($id)
来提供进度条(假设你的脚本是在控制台启动的)。
事实上,这是load()
正在做的内部,请参阅对象'清单'资源类
另一个选择是通过调用$list->getItems($offset, $itemCountPerPage)
将加载拆分为多个"页面"。
在Pimcore对象列表中,您可以遍历列表中的每个对象,而无需调用load
方法。在您的情况下,只需删除"$list->load ();"
,看看它会用更少的时间工作。