Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 20874 Просмотров
*

akunari

  • Осваиваюсь на форуме
  • 33
  • 4 / 0
Билась третий день в истерике -  не отправлял VirtueMart данные о заказе. При этом в Joomla все настроено нормально было.

Нашла решение  здесь - http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/virtuemart-ne-otpravlyaet-pisma-aktivacii-polzovatelya-ili-zakaza/comment-page-1/#comment-59

Спасибо огромное автору!)

Решение такое

Что же мы имеем: Компонент VirtueMart использует свой класс для отправки почты, который использует библиотеку phpmailer с классом PHPMailer.
В моем случае Joomla была настроенна на отправку почты через php функцию mail. После долгих разбирательств было выяснено, что все равботает в штатном режиме, но когда дело уже доходит до фактической отправки, функция mail выполняется с ошибкой, и возвращает результат flase. Но, самое интересное, что VirtueMart не проверяет результат выполнения функции, а сообщает о том, что все замечательно.
Всё дело оказалось в 5 параметре функции mail «$additional_parameters», этот параметр испошьзуется для передачи дополнительных параметров программе, которая производит непосредственную отправку почты.


Цитировать
1   bool mail ( string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]] )


В PHPMailer туда присваивается такое значение:

Цитировать
1   $params = sprintf("-oi -f %s", $this->Sender);


Не в даваясь в подробности, скажу, что это правильно так и нужно делать, но не на всех хостингах это разрешено. Здесь фактически и возникает сама проблема: на хостинге запрещено использование некторых дополнительных параметров для почтовой программы, функция mail не может отправить письмо, о чем честно сообщает в возвращаемом результате, а VirtueMart безразлично ушло письмо или нет.
Для решение этой проблемы достаточно изменить выше указанную строчку в файле «libraries/phpmailer/phpmailer.php» на


Цитировать
1   //    $params = sprintf("-oi -f %s", $this->Sender);
2       $params = '';

И все работает)))))
*

Vitek

  • Захожу иногда
  • 185
  • 0 / 0
*

djidi

  • Новичок
  • 6
  • 0 / 0
*

Muxpyc

  • Захожу иногда
  • 73
  • 0 / 0
Эх..а мне не помогло :( Пробовал и добавлять эту строчку, и заменять первую на вторую. Не приходит письмо, хотя заказ формируется в админке - там всё путём.
Вот моя тема: http://joomlaforum.ru/index.php/topic,156619.0.html
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
*

Одессит

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Огромное спасибо! Что только не пробовал - бестолку! А Ваш совет выручил! *DRINK* :D
*

Kirill324

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Проверьте, может письма отправляются, но приходят в спам! (на разных почтах по-разному, но такое случается часто)
Я лично наверное полдня прогуглил эту тему, поизменял файлы, повставлял коды, настраивал джумловский smtp. А письма то нормально отправлялись, только сохранялись в спам.  ;D
*

Albion84

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
А пролема то так и осталась! >:(
*

kreolka_8

  • Захожу иногда
  • 153
  • 2 / 0
Спасибо, Спасибо!
Мои письма с Вопросом о товаре приходили с опазданием в 30 мин., а потом и вовсе перестали приходить, нашла их в СПАМЕ.
Только ваш способ вернул все на свои места: +1
*

Нариман

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
прошу заметить, что у тех у кого почта на гугловском акаунте иногда письма почему то  автоматически помешаюются в папку спам.  после нескольких часов шаманства над магазином (настройки, код, хаки) случайно обнаружил что все письма исправно приходили  на почту но почему то помешались в спам.
*

Two-Lik

  • Новичок
  • 3
  • 0 / 0
Спасибо огромное помогло, долго над проектом провозился, хорошо что есть joomlaforum, так бы наверное еще неделю просидел бы!
*

Djeker

  • Новичок
  • 2
  • 0 / 0
Добрый вечер.
У меня подобная проблема, но так и не решилась. Отправляет и мне и клиенту уведомление о регистрации, но не отправляет уведомления о заказе.

Joomla! 2.5.14
VM 2.0.22a

Настройка почты Joomla
Способ отправки php mail
E-mail сайта seller@buykers.ru
Отправитель письма www.buykers.ru
Путь к Sendmail /usr/sbin/sendmail
Авторизация на SMTP-сервере Да
Защита SMTP нет
Порт SMTP-сервера 25
Имя пользователя SMTP seller
Пароль для SMTP пароль от мыла
SMTP-сервер mail.nic.ru

Настройки VM
Магазин - Дополнительная информация - Информация о покупателе
seller@buykers.ru

Так же поправил phpmailer.php

Уведомления так и не приходят.
*

konstantin666

  • Новичок
  • 7
  • 0 / 0
*

kaprikorn

  • Осваиваюсь на форуме
  • 39
  • 4 / 0
  • www.cleverscript.ru
Есть еще решение по замене кода в функции renderMail http://www.cleverscript.ru/cms/joomla/84-sendadminvirtuemart.html
*

Adrian1111

  • Захожу иногда
  • 271
  • 1 / 0
У меня была аналогичная проблема, только с тем отличием, что письма заказчику приходили, а админу нет. ПЕребробовал этот способ и еще массу других. В итоге, выяснилось, что в разделе: "настройки-оформление заказа", в графе: "Статус заказа по умолчанию для отправки эл.письма продавцу" нужно было выставить такие же опции, что и  в графе: "Статус заказа по умолчанию для отправки эл.письма покупателю". Теперь работает.

*

besick

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Месяц мучился, СПСИБО  "Adrian1111"
*

bubonik

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Есть еще решения проблемы?
*

frenzy

  • Захожу иногда
  • 63
  • 1 / 0
Я заметил, что как минимум Яндекс имеет обыкновение резать письма. То есть они даже в спам не попадают, а просто не приходят. Так же есть рекомендация ставить почту продавца и админа сайта как доменную
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Слетело оформление заказов VirtueMart 1.1.8

Автор Zegeberg

Ответов: 0
Просмотров: 3359
Последний ответ 24.01.2017, 12:35:57
от Zegeberg
При заказе не отправляются письма на электронную почту

Автор vsokol

Ответов: 5
Просмотров: 4214
Последний ответ 29.05.2016, 07:17:31
от vsokol
[Решено] Изображение и ссылка на товар в теле письма о заказе

Автор zmancer

Ответов: 18
Просмотров: 11558
Последний ответ 11.03.2016, 22:28:28
от Pustota
Номер заказа в модуле

Автор sashgera

Ответов: 0
Просмотров: 3495
Последний ответ 28.02.2016, 22:44:30
от sashgera
One Page Checkout (оформление заказа на одной странице) - Скрыть поле по выбору радиобаттон

Автор sashgera

Ответов: 1
Просмотров: 4286
Последний ответ 23.09.2015, 06:02:39
от sashgera