Php Magento批量订单、产品和客户创建
我在Magento中创建了一个模块,通过创建随机的产品、订单和客户来复制大型商店。上面描述的数据创建发生在我的模型中,该模型是纯PHP代码。尽管使用了PHP的unset()和Magento的clearInstance(),我还是遇到了严重的内存管理问题。我在下面注释了10行代码,显示了我释放内存的尝试是如何失败的Php Magento批量订单、产品和客户创建,php,magento,memory-management,memory-leaks,Php,Magento,Memory Management,Memory Leaks,我在Magento中创建了一个模块,通过创建随机的产品、订单和客户来复制大型商店。上面描述的数据创建发生在我的模型中,该模型是纯PHP代码。尽管使用了PHP的unset()和Magento的clearInstance(),我还是遇到了严重的内存管理问题。我在下面注释了10行代码,显示了我释放内存的尝试是如何失败的 /** * Creates random customers. * * @param int $offset, used to make sure the ids create
/**
* Creates random customers.
*
* @param int $offset, used to make sure the ids created are unique
*/
protected function _createCustomer($offset)
{
// Create some random customer information
$firstName = strtolower($_firstNames[array_rand($_firstNames, 1)]);
$lastName = strtolower($_lastNames[array_rand($_lastNames, 1)]);
$customerEmail = $firstName[0] . $lastName.time().$offset."@weliketopumpit.com";
// Retrieve customer model
$customer = Mage::getModel('customer/customer')
->setWebsiteId(Mage::app()->getWebsite()->getId())
->loadByEmail($customerEmail);
// Populate model and save it
if(!$customer->getId()){
$customer
->setEmail ($customerEmail)
->setFirstname($firstName)
->setLastname ($lastName)
->setPassword ('password1')
->setCreatedAt(rand($this->_startDate, time()));
}
$customer->save();
$customer->setConfirmation(null);
$customer->save();
$this->log(memory_get_usage() . "\n"); // Returns 17306840
$customer->clearInstance(); // Called to clean up the object
$this->log(memory_get_usage()); // Returns 17307304, memory wasn't unallocated
debug_zval_dump($customer); //Returns a refcount(2)
}
调用unset代替clearInstance()会产生相同的结果。关于使用Magento型号后如何清理的任何提示?我会使用资源而不是型号,这样会更快、内存成本更低。如果这还不够好,请将其转换为原始sql,EAV在插入记录时并没有那么复杂 我还想尝试的另一种方法是: 但这不建议用于生产,所以我将构建一个包含这些解构师的自定义客户模型,并在脚本中使用新模型,而其他所有(生产)都在正常模型上运行