我在自定义模块的控制器中使用以下代码来使用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;
}
答案 0 :(得分:0)
我认为问题是当magento尝试向客户发送电子邮件时。将方法setIsCustomerNotified的参数更改为true或禁用magento电子邮件通信。如果有帮助,您必须配置服务器以正确发送电子邮件