Виснет форма отправки комментариев

Добрый день.

Livestreet 1.0.1. Apache+nginx, PHP как FastCGI, fastvps.ru.

Сразу скажу, что поиском пользовался, ниже опишу, что уже попробовал.

Проблема: при отправке комментария виснет форма его отправки, при этом сам комментарий отправляется на сервер и его можно увидеть, обновив страницу.

Проблема появилась сегодня. По идее после добавления плагина qipsmiles, однако плагин уже давно отключен и удален. Более того, я уже вернул бэкап файлов ДО момента активации плагина, а также убрал все комментарии, где были смайлы, причем не только на сайте, но и из MySQL через phpmyadmin.

В логе Apache ничего интересного, просто указание на таймаут:
[Thu Jul 04 20:35:42 2013] [warn] [client 95.79.76.83] mod_fcgid: read data timeout in 40 seconds, referer: адрес-топика
[Thu Jul 04 20:35:42 2013] [error] [client 95.79.76.83] Premature end of script headers: index.php, referer: адрес-топика
В nginx по сути то же самое. Firebug просто указывает на Error 500 через 40 секунд после отправки комментария.

В поиске нашел возможную причину: отправка почты. В config.php сделал вот так:
$config['sys']['mail']['include_comment'] = false; // Включает в уведомление о новых комментах текст коммента
$config['sys']['mail']['include_talk'] = false; // Включает в уведомление о новых личных сообщениях текст сообщения
То есть по сути все уведомления выключены, так?

На всякий случай перед этим пробовал менять значение $config['sys']['mail']['type'] на mail, sendmail и smtp (для smtp данные, естественно, вводил) — толку никакого.

Но при этом я спокойно комментирую свои записи! Именно поэтому и интересуюсь, все ли я сделал для отключения почты. На чужих топиках зависает, в моем же все гладко. При этом плюсики-минусики во всех топиках и ко всем комментариям ставятся нормально.

Естественно, сто раз уже почистил кэш шаблонов и файлы в ./tmp — не помогает.

Помогите, люди добрые! Ведь судя по старым топикам на livestreet.ru, не только у меня эта проблема остается нерешенной.

8 комментариев

avatar
Насколько я понял из всего этого, проблема лишь в том, что после публикации комента двиг пытается отправлять всем, кто следит за этим топиком письма на почту. Установив false в конфиге (выше описано где поставлены) Вы не запрещаете отправлять письма, а только указываете, что в них должно быть.

Установите отложенную рассылку коментов по крону и все.
  • dsg
  • +4
avatar
Во, это уже интересно.

А можно чуть разжевать? Правильно ли я понимаю, что я должен сделать примерно так:
$config['module']['notify']['delayed'] = true;
$config['module']['notify']['insert_single'] = true;
А дальше нужно добавить в cron выполнение этого скрипта:
/include/cron/notify.php
Больше ничего делать не нужно?
avatar
Черт возьми, оно работает! :D Спасибо, dsg, большое спасибо.
avatar
все верно. Осталось только понять сколько Ваш сервер способен писем унести и за какое время. Лично у меня стоит 500 писем за раз и скрипт выполняется раз в 5 минут (хотя сервак может уносить около 3000 писем за 5 минут, но это уже дело наблюдений)
avatar
кстати, рекомендую почитать еще этот топик http://livestreet.ru/blog/projects_and_ideas/14732.html, чтобы при регистрации и восстановлении пароля юзеры не ждали, когда крон отправит очередную тачку писем.
avatar
Хорошо, большое спасибо!
avatar
А как это, добавить в cron выполнение этого скрипта?
А дальше нужно добавить в cron выполнение этого скрипта:
/include/cron/notify.php
Напишите чуть подробнее, плиз, у меня такая же проблема, и так она меня достала, прям ужос. Как добавить в cron выполнение скрипта? Если всё заработает — с меня пиво! :)
avatar
Я добавлял через ISPmanager. Через консоль так: itshaman.ru/articles/467/planirovshchik-v-linux-ili-kak-pravilno-ispolzovat-crontab
Команда будет типа "*/5 * * * * /usr/bin/php путь-к-папке-с-сайтом/site.ru/www/include/cron/notify.php > /dev/null
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.