[BS] Real Time Chat

[BS] Real Time Chat 1.4.0

Нет прав для скачивания
У Вас сервер по неизвестным причинам упал. Тот, который чат и обслуживает.
 
У Вас сервер по неизвестным причинам упал. Тот, который чат и обслуживает.
А в чем может быть проблема? После перезагрузки чат работает нормально, но через какое-то время появляется такая ошибка, а когда захожу в консоль сервера вижу, что он сам по себе выключен. Приходится его перезагружать снова. Начал замечать это с версии 1.1.0, и ещё могу отметить, последнее время активности в чате не было. Может это ещё повлияло...
 
У одного "клиента" имеется проблема с частыми ребутами сервера. Просто здравствуй, MyArena, просто как дела. Руками стартовать чат-сервер после каждого подобного инцидента знатно поднадоело.

В общем, поколупавшись в этой хрени с супер/человекасом/монополистом CrazyHackGUT мы соорудили юнит для systemd (гореть ему в аду).

Получилось что-то вот такое:
INI:
[Unit]
Description=Real Time Chat server
Requires=mariadb.service

[Service]
User=user
Group=user
Type=forking
PIDFile=internal_data/bs_chat.pid
WorkingDirectory=/home/user/web/domain.tld/public_html
ExecStart=/usr/bin/php chat_systemd start -d
ExecStop=/usr/bin/php chat_systemd stop
ExecReload=/usr/bin/php chat_systemd restart -d
TimeoutSec=300
Restart=always

От вас будет необходимо отредактировать параметры User и Group, а так же в WorkingDirectory указать путь к директории вашего форума.

Возможно понадобится в третьей строке заменить mariadb на mysql.

При изменениях файла юнита необходимо перезагружать демона: systemctl daemon-reload

Писалось на сервере под CentOS 7.
Юнит ложился в /etc/systemd/system
Прошу Smalesh поправить по этому поводу, т.к. бегло прочитав доку не особо въехал, куда ложить.

systemd:
Код:
[root@server system]# systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

Как вы могли заметить, в конфиге юнита фигурирует скрипт chat_systemd. Это - немного измененный стандартный скрипт запуска чата, отличающийся от дефолтного тем, что в нём настраивается pid-файл для Workerman(почему автор не сделал этого сам?).
Diff:
13a14,16
> XF::setupApp('XF\App');
>
> \Workerman\Worker::$pidFile = 'internal_data/bs_chat.pid';

Модифицированный файл прикладываю архивом, распаковать в корень форума.

Для тех, кому нада пруфи.
1607197244073.png
 

Вложения

  • chat_systemd.zip
    429 байт · Просмотры: 24
Последнее редактирование:
Прошу @Smalesh поправить по этому поводу, т.к. бегло прочитав доку не особо въехал, куда ложить.
Туда и ложить, только перечитать сустемд при каждой правке.
systemctl daemon-reload
 
Smalesh, да, забыл указать этот момент, добавлю в пост.
 
Заметил, что все сообщения из чата появляются на страничке пользователя во вкладке "контент", тем самым засоряя эту вкладку. Как можно отключить это?

При отправке сообщения дублируются, как пофиксить это?
 
Последнее редактирование модератором:
Такого не замечалось, Вы нормально настроили всё?
 
При отправке сообщения
Такого не замечалось, Вы нормально настроили всё?
Да, на вдс стоит, все оптимизировано под чат (через Ajax). Суть в том, что сообщения дублируются только визуально
 
Тоже самое кстати, во вкладку "Публикации" #recent-content.
 
А как из публикаций сообщения убрать, не знаешь?
Пока нет, ищу причину почему они туда отправляются, видимо что-то не так настроено

Нашёл. Показывается в "публикациях" благодаря шаблону search_result_chat_message с кодом:
HTML:
<li class="block-row block-row--separated" data-author="{{ $message.User.username ?: phrase('unknown') }}">
    <div class="contentRow">
        <span class="contentRow-figure">
            <xf:avatar user="{$message.User}" size="s" defaultname="{$post.username}" />
        </span>
        <div class="contentRow-main">
            <h3 class="contentRow-title">
                {{ phrase('chat_message') }}
            </h3>

            <div class="contentRow-snippet">{{ bb_code($message.message|censor, 'chat:message', $message) }}</div>

            <div class="contentRow-minor contentRow-minor--hideLinks">
                <ul class="listInline listInline--bullet">
                    <li><xf:username user="{$message.User}" /></li>
                    <li><xf:date time="{$message.message_date}" /></li>
                </ul>
            </div>
        </div>
    </div>
</li>
 
Последнее редактирование модератором:
Нашёл. Показывается в "публикациях" благодаря шаблону search_result_chat_message с кодом:
HTML:
<li class="block-row block-row--separated" data-author="{{ $message.User.username ?: phrase('unknown') }}">
    <div class="contentRow">
        <span class="contentRow-figure">
            <xf:avatar user="{$message.User}" size="s" defaultname="{$post.username}" />
        </span>
        <div class="contentRow-main">
            <h3 class="contentRow-title">
                {{ phrase('chat_message') }}
            </h3>

            <div class="contentRow-snippet">{{ bb_code($message.message|censor, 'chat:message', $message) }}</div>

            <div class="contentRow-minor contentRow-minor--hideLinks">
                <ul class="listInline listInline--bullet">
                    <li><xf:username user="{$message.User}" /></li>
                    <li><xf:date time="{$message.message_date}" /></li>
                </ul>
            </div>
        </div>
    </div>
</li>
Теперь бы ещё понять, как убрать основные «баги» чата, с зависанием, дублированием сообщений и т.д.
Может вместо аджакса другое выбрать?

И да, что-то не особо понимаю, как отсюда убрать отображение сообщений из чата
 
Последнее редактирование модератором:
И да, что-то не особо понимаю, как отсюда убрать отображение сообщений из чата
Не знаю правильно сделал или нет, но я просто закомментировал весь код шаблона. Насколько я понял он весь отвечает за вывод этих сообщений туда, хотя по названию шаблона особо так не скажешь
 
Не знаю правильно сделал или нет, но я просто закомментировал весь код шаблона. Насколько я понял он весь отвечает за вывод этих сообщений туда, хотя по названию шаблона особо так не скажешь
Я просто убирал весь код)
 
Вообще то это фича, что сообщения дублируются в "публикации". Это происходит, чтобы их потом можно было найти через поиск. (Я спрашивал у автора чата про отдельный поиск для сообщения, т.е. уже логирование сообщений - фича). Я не знаю, кому нужно это выпиливать, ну окъ
 
Современный облачный хостинг провайдер | Aéza

Похожие темы

Назад
Сверху Снизу