Magento - 客户导入缓慢 - 希望优化脚本

Magento - Customer import slow - looking to optimise script

我有一个每天 imports/updates 3000 位客户的 cron。然而,这需要大约 5 个小时......我每天都需要这样做,所以我正在尝试优化我的代码以提高速度。

这是我当前的代码:

// ~3000 customers
foreach($results as $customerRecord) {
    // customer general data:
    $customer = $customerModel;
    $customer->setWebsiteId($websiteId);
    $email = $customerRecord['cc_email'];

    $password = $email; // set password same as email
    $customer->loadByEmail($email);

    $customer->setEmail($email);
    $nameAr = explode(" ", $customerRecord['cc_name']);
    $customer->setFirstname($nameAr[0]);
    $customer->setLastname($nameAr[1]);
    $customer->setPassword($password);
    // custom attributes
    $customer->setCustomerFromOw("Yes");
    $customer->setCdOwAccount($customerRecord['cd_ow_account']);
    $customer->setDiscountStructureName($customerRecord['discount_structure_name']);
    $customer->setPriceListName($customerRecord['price_list_name']);
    $customer->setCcdCreditLimit($customerRecord['ccd_credit_limit']);
    $customer->setCcdtBalance($customerRecord['ccdt_balance']);
    $customer->setAdditionalPriceLists($customerRecord['additional_price_lists']);
    $customer->setOwDeliveryRates($customerRecord['ow_delivery_rates']);
    // Netzarbeiter CustomerActivation - ensure set to true
    $customer->setCustomerActivated(true);
    try {
        $customer->setConfirmation(null);
        // Netzarbeiter CustomerActivation - ensure set to true
        $customer->setCustomerActivated(true);
        $customer->save();
    }
    catch (Exception $ex) {
        Zend_Debug::dump($ex->getMessage());
        Mage::log('FAIL: Customer with email '.$email.' - '.$ex->getMessage(), null, 'sulman.log');
    }

    // customer delivery address:
    $_delivery_address = array (
        'firstname' => $nameAr[0],
        'lastname' => $nameAr[1],
        'street' => array (
            '0' => $customerRecord['cd_invoice_address1'],
            '1' => $customerRecord['cd_invoice_address2']." ".$customerRecord['cd_invoice_address3'],
        ),
        'city' => $customerRecord['cd_invoice_town'],
        'region_id' => '',
        'region' => $customerRecord['cd_invoice_county'],
        'postcode' => $customerRecord['cd_invoice_postcode'],
        'country_id' => $customerRecord['cd_invoice_country_code'],
        'telephone' => $customerRecord['cd_invoice_telephone'],
        'company'=> $customerRecord['cd_invoice_name'],
    );

    $customAddress = Mage::getModel('customer/address');
    $customAddress->setData($_delivery_address)
        ->setCustomerId($customer->getId())
        ->setIsDefaultBilling('1')
        ->setIsDefaultShipping('1')
        ->setSaveInAddressBook('1');
    try {
        $customAddress->save();
    }
    catch (Exception $ex) {
        Zend_Debug::dump($ex->getMessage());
    }
}

我真的看不出有任何其他方法可以做到这一点 - 但如果有人能找到优化方法,我将不胜感激! 谢谢

使用AvS_FastSimpleImport 模块快速导入客户下面类似于模块。

https://github.com/avstudnitz/AvS_FastSimpleImport

您需要为导入客户传递数组格式的数据。

require_once 'src/app/Mage.php';
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$data[] = array('firstname' => "test",
  .....
  );

try {
/** @var $import AvS_FastSimpleImport_Model_Import */
   $import = Mage::getModel('fastsimpleimport/import');
    $import->processCustomerImport($data);
} catch (Exception $e) {
    print_r($import->getErrorMessages());
}