Почему долгий запрос к action.php?
Установлен minishop2. На сайте имеется страница с корзиной, но при оформлении заказа на этой странице modx совершает долгий запрос к action.php(pending...). С чем это может быть связано? Причем это совершается как для онлайн-оплаты долго, так и для оплаты при получении( то есть для страницы об успешной оплате). Есть вариант, конечно, предупреждать пользователя, что идет загрузка, но это неудобно. Сайт — marmeladich.ru/cart/
upd: Немного покопался в файлах минишопа. Вот эта функция тормозит оформление заказа:
upd: Немного покопался в файлах минишопа. Вот эта функция тормозит оформление заказа:
$response = $this->ms2->changeOrderStatus($order->get('id'), 1);
Что с ней не так? Комментарии: 7
Пользователю отправляется письмо о том, что его заказ создан. Часто эта операция занимает много времени.
Решил проверить функцию changeOrderStatus. И вправду из-за отправки письма пользователю запрос тормозится, но что делать если чанки для tpl.msEmail.new.user и tpl.msGetOrder такие же как на minishop2.com?
if ($status->get('email_user')) {
if ($profile = $this->modx->getObject('modUserProfile', array('internalKey' => $pls['user_id']))) {
$subject = $this->pdoTools->getChunk('@INLINE ' . $status->get('subject_user'), $pls);
$tpl = '';
if ($chunk = $this->modx->getObject('modChunk', array('id' => $status->get('body_user')))) {
$tpl = $chunk->get('name');
}
$body = $this->modx->runSnippet('msGetOrder', array_merge($pls, array('tpl' => $tpl)));
$email = $profile->get('email');
if (!empty($subject) && preg_match('#.*?@.*#', $email)) {
$this->sendEmail($email, $subject, $body);
}
}
}
upd: Оказывается даже на отправку письма менеджеру запрос тормозится
if ($status->get('email_manager')) {
$subject = $this->pdoTools->getChunk('@INLINE ' . $status->get('subject_manager'), $pls);
$tpl = '';
if ($chunk = $this->modx->getObject('modChunk', array('id' => $status->get('body_manager')))) {
$tpl = $chunk->get('name');
}
$body = $this->modx->runSnippet('msGetOrder', array_merge($pls, array('tpl' => $tpl)));
$emails = array_map('trim', explode(',',
$this->modx->getOption('ms2_email_manager', null, $this->modx->getOption('emailsender')))
);
if (!empty($subject)) {
foreach ($emails as $email) {
if (preg_match('#.*?@.*#', $email)) {
$this->sendEmail($email, $subject, $body);
}
}
}
}
if ($status->get('email_user')) {
if ($profile = $this->modx->getObject('modUserProfile', array('internalKey' => $pls['user_id']))) {
$subject = $this->pdoTools->getChunk('@INLINE ' . $status->get('subject_user'), $pls);
$tpl = '';
if ($chunk = $this->modx->getObject('modChunk', array('id' => $status->get('body_user')))) {
$tpl = $chunk->get('name');
}
$body = $this->modx->runSnippet('msGetOrder', array_merge($pls, array('tpl' => $tpl)));
$email = $profile->get('email');
if (!empty($subject) && preg_match('#.*?@.*#', $email)) {
$this->sendEmail($email, $subject, $body);
}
}
}
Попробуйте настроить на сайте SMTP — возможно, тормозит почтовый сервер.
Так и оказалось) Отключил smtp, все стало в норме
Решил данную проблему! Дело было в SMTP. По какой-то причине, при использовании smtp запрос на отправку письма долго обрабатывался. Поэтому я отключил SMTP. Теперь все ОК.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.