【发布时间】:2014-12-21 14:54:56
【问题描述】:
我在自定义模块的控制器中使用以下代码通过AJAX 调用更改订单状态,我发现它运行非常缓慢。我在谷歌上搜索过,但上面没有这样的主题。
我添加了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;
}
【问题讨论】: