magento以编程方式保存订单需要太长时间

时间:2014-12-21 14:54:57

标签: ajax magento

我在自定义模块的控制器中使用以下代码来使用AJAX调用更改订单状态,我发现它运行得非常慢。我在Google上搜索过,但没有关于它的话题。

我添加了time()行来测试执行时间。完成每个通话需要30到40秒。我在Mage_Adminhtml_Sales_OrderController中使用了相同的代码,以便我可以更改后端的订单状态,但它会很快返回,exetime等于0。我认为这与硬件性能无关,因为它运行在8GB内存和8核CPU上。 Magento是否有任何可能的原因需要这么长时间来保存订单?这个调用是否有一些限制,以便它在后端运行得更快?

public function changestatusAction()
{
    if (!isset($_POST["oid"]) || !$_POST['oid']) {
        echo '{"error":1}';
        return;
    }
    if (!isset($_POST["status"]) || !$_POST['status']) {
        echo '{"error":1}';
        return;
    }
    $errstr = "";


    try{
    $order = Mage::getModel('sales/order')->loadByIncrementId($_POST['oid']);
    $order->addStatusHistoryComment('', $_POST['status'])
                ->setIsVisibleOnFront(false)
                ->setIsCustomerNotified(false);
    $starttime = time();            
    $order->save();
    $endtime = time();   
    $exetime = $endtime - $starttime;    
    }catch(Exception $e){
            $errstr .= $e->getMessage();
    }


    if($errstr)
        echo '{"changed":0,"err":"'.$errstr.'"}';
    else echo '{"changed":1,"exetime":"'.$exetime.'"}';
    return;
}

1 个答案:

答案 0 :(得分:0)

我认为问题是当magento尝试向客户发送电子邮件时。将方法setIsCustomerNotified的参数更改为true或禁用magento电子邮件通信。如果有帮助,您必须配置服务器以正确发送电子邮件