За последние 24 часа нас посетили 17513 программистов и 1722 робота. Сейчас ищут 956 программистов ...

MySQL версия форумного движка ExBB

Тема в разделе "Прочие вопросы по PHP", создана пользователем Николай12, 14 апр 2014.

  1. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Последнюю неделю не было времени, сейчас думаю продолжить разработку.
    Хочу поинтересоваться, как лучше реализовать кеширование? Например страниц просмотра темы. Сохранять выводимый HTML код не вариант, т.к. хочу в теме отображать, на форуме пользователь (тот, который добавил сообщение) или нет...
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Сунь ajax туды, который обновит динамичные блоки.
     
  3. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    А если отображается по 15 сообщений или ещё больше, посылать 15 запросов сразу? Оправдано ли это?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Нет. Выбери все данные за один запрос. А уже на стороне клиента их разбери и поставь что надо, куда надо.
     
  5. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Сделал новую версию ExBB SQL 0.0.3, на ней сейчас работает http://exbb.hol.es/.
    Расширены возможности системы плагинов.
    Расширены возможности системы шаблонов, появилась возможность переопределять виды плагинов и модулей. Благодаря этому нововведению стало возможным полностью изменить дизайн форума не вмешиваясь в исходный код плагинов и модулей. Пример - http://exbb.hol.es/, с помощью шаблона полностью изменён дизайн.
    Инсталлятор теперь сделан в таком же стиле, как и главная страница форума.
    Исправлены баги версии 0.0.2
    Появилась возможность заменить вид всех ссылок с помощью плагинов (можно будет попробовать сделать ЧПУ)
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Молоток :)
    Только сделай расстояние между секциями категорий меньше, чем между шапкой и первой секцией, а то глаз режет.
     
  7. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Сделал поменьше)
     
  8. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Исправил кое-какие косяки в шаблоне, наладил BB коды, открыл один форум для гостей. Уже вполне можно нормально общаться.
    Следующее по планам ЧПУ
    http://exbb.hol.es/topics/1234.html
    http://exbb.hol.es/forums/1234.html
    http://exbb.hol.es/users/1234.html
    или:
    http://exbb.hol.es/topic-1234.html
    http://exbb.hol.es/forum-1234.html
    http://exbb.hol.es/user-1234.html

    Как лучше?
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1) Первый вариант лучше.
    2) Ты что-то накосячил, у тебя лимит по затратам проца превышен.
    3) Накуй бесплатные хостинги, тебе уже начали прижимать яйцы. Когда спросишь, в чем дело, тебе скажут - переходи на платную основу. Еще и акк могут зафризить кхерам. Со всеми данными на нем. Это типичная тактика.
    Вот те сцылка. Работают на ура. Стоят копейки. Не первый год пользуюсь, довольный как слоноконь. И поддержка суперская. Чтобы с тикетами не морочиться, можно в скайпе в рилтайме общаться. Всегда помогут, всегда пойдут на встречу.
     
  10. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Зарегался потыкать, SSH по дефолту отключен (
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Из соображений безопасности. Попроси в скайпе - включат без доплат и тд. На твой страх, риск и все такое. Мне включали :) Единственное, на шареде никто тебе рутовый доступ не даст. Это факт. А в остальном все воркает.
     
  12. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Хех, я уже публичный ключ создал, залил, а оно мне фиг показало ) Создал тикет, на вид хостер прилично смотрится, ценник даже некоторое недоверие вызывает, для "что бы показать" самое то, а там видно будет.
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я с ними уже дело имею наверное года три как. Четвертый идет. Нареканий или проблем не было. Ни разу "яйцы" не выкручивали. Ни разу ничего не запрещали, ультиматумы не ставили. На качество работы не жаловался никогда. Машины у них не допотопные, постоянно отчитываются об апгрейдах и переносах сайтов на новые сервера. Инфа по шаред серверам доступна в рилтайме постоянно, аптайм, загрузка проца.

    З.Ы. http://shneider-host.ru/whmcs/knowledgebase.php?action=displayarticle&id=3
     
  14. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    На hostinger.ru даже HTML сайты со временем лимит привышают))) это факт))
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Это тактика любого бесплатного хостинга - ждут пару месяцев в лучшем случае, пока привыкнешь, а потом раз - и хвать тя за яйцы. Сам не раз на такое натыкался, когда по бесплатным хостингам ходил.
     
  16. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Ещё пару вопросов по ЧПУ, в .htaccess делаю так:
    Код (Text):
    1. RewriteRule ^topics/([0-9]+).html(/?)+$ index.php?a=topic&topic=$1 [L]
    В плагине генерации ссылок так:
    Код (Text):
    1.  
    2.     public static function topic($id, $page=1, $params=array()) {
    3.         return URL."/topics/{$id}.html";
    4.     }
    А как делать обработку GET параметра page и других GET параметров, если неизвестно, какие они могут быть?
    Со страницами можно так, дописав ещё несколько правил в .htaccess
    http://forum.ru/topics/1234-page2.html
    http://forum.ru/forums/1234-page2.html

    А как с другими параметрами, например search, делать так:
    http://forum.ru/forums/1234-page2.html&search=text - это http://forum.ru/index.php?a=topic&topic=1234&page=2&search=text
     
  17. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Извиняюсь за долгую задержку))

    Форум на моём движке теперь доступен по адресу: http://exbb.pw/
    Сейчас есть некоторые неточности в шаблоне, например в цепочке навигации. Скоро поправлю...

    Было сделано несколько улучшений, сегодня сделал проверку, прочитана ли тема пользователем.
     
  18. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Исправил цепочку навигации.
     
  19. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    заходим на главную. видим внизу [Time: 0.0215 Memory: 932.6094 (Peak: 980.9414) KB; SQL Queries: 33]
    вот интересно, что там за запросы такие необходимые?
    думаю запросы такие:
    - получение списка тем = 1
    - проверка авторизации = 1
    - данные профиля =1 (хотя я зашел как гость)
    - получение какихто настроек сайта + личные = 2
    - статистика внизу = 5 например (и нах она нужна вообще, либо в кеш её загнать)

    итого: 10 запросов. максимум. с натягом. если архитектура нормальная.
    блин, но откуда 33 ? что там в цикле чтоли чтото выбирается?)
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
  21. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Проверка прав доступа для каждого из форумов. Доступ регулируется с помощью групп

    Добавлено спустя 56 секунд:
    Получение информации о пользователях, которые оставляли в теме сообщения. Тут сделаю выборку пользователей одним запросом

    Добавлено спустя 1 минуту 17 секунд:
    Гость тоже пользователь, его профиль тоже хранится в БД
     
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Воу воу. То есть, если будет 1000 форумов, то глагне прогрузит 1000 запросов?
     
  23. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а нельзя выбрать это одним запросом? все права текущего юзера для каждой темы сразу.
    непонял. и где это выводится? нужно то всего узнать кто создал тему, кто последний ответил(как вариант). и все. это можно совместить с запросом выборки самих тем.

    в общем, очень много лишних запросов. это факт.
     
  24. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Вот функция, выполняется для каждого форума. В принципе можно все права выбирать один запросом сразу.

    Код (Text):
    1.     /**
    2.     * Проверяет права доступа к определённому форуму
    3.     * @param int $forum_id ID форума
    4.     * @param string $right Название права доступа
    5.     * @return bool
    6.     */
    7.     public static function checkForum($forum_id, $right) {
    8.         if (isset(self::$rights[$forum_id]) && isset(self::$rights[$forum_id][$right]) && self::$rights[$forum_id][$right]) return true;
    9.        
    10.         $access = db::getRow('SELECT access_value FROM exbb_access WHERE group_id=?i AND forum_id=?i AND access_name=?s', core::$user->getGroupId(), $forum_id, $right);
    11.        
    12.         if (!isset(self::$default[$right])) self::$default[$right] = false;
    13.  
    14.         if (!isset($access['access_value']) && self::$default[$right]) return true;
    15.        
    16.         if ($access['access_value']) return true;
    17.         return false;
    18.     }
     
  25. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну так - just do it!

    Добавлено спустя 2 минуты 50 секунд:
    а лучче сразу - невыбирать форумы куда нет доступа. да и все. и проверок непонадобится