Я думаю, что если проект не однодневный, а долгожитель, особенно с большой посещалкой то данная манипуляция будет оправдана. Да и далеко не в каждом проекте ввод мемкеша может значительно снизить нагрузку на БД.
Получается чтобы перелопатить движек на PDO как я понимаю нужно переписать все мапперы, ведь так? Больше нигде же SQL запросы не посылаются?
Тогда прошу прощения, за неправильный совет. На мастерхосте не хостился, но у тех у кого был раньше хостинг, если не ошибаюсь chmod был доступен.
А вообще конечно, на мой взгляд, для Livestreet на начальных стадиях развития проекта лучше брать VPS-сервер(хотя наверно это уже не раз тут обсуждалось).
Это всё понятно, но я хотел бы сделать как-то попроще. Допустим нам придется на одной странице раз 1000 спросить текущий это пользователь или нет, то тогда получится 1000 раз произойдет присваивание вида
$oUser=$this->User_GetUserCurrent();
а мне кажется это будет совсем не оптимизировано(даст нагрузку). Как можно по другому это сделать?
Как вариант можно сделать еще так:
после сохранения провести пользователя по страницам которые удаляют по 50 топиков например:
Идет сохранение данных (10% завершено) (а фоново (Ajax) по очереди вызываются страницы вида /deletetopic/?ids=1,2,3,4,5,6,7,8,9… перечисление удаляемых id...50)
Давайте я Вам расскажу задачу которую делаю, чтобы было более понятно о чем я.
У каждого пользователя есть некие дополнительные данные: рост, вес,… около 300 штук.
При редактировании пользователь проставляет галочки напротив нужных пунктов.
Где галочка стоит, то там надо создать топик(если он не создан) в персональном блоге, например: «мой рост 180 см». И дальше пользователи могут комментировать это дело.
Если галочка не стоит, то нужно удалить старый топик (если он имеется).
Мне показалось самым логичным для этого использовать именно создание/удаление топиков.
Или можно это реализовать легче?
Я если честно немного в шоке, от вашего ответа.
Смотрите, пример: удаление блога с топиками — стандартная задача для движка. Предположим что у нас в блоге 100000 топиков, тогда если посчитать математически получается удаление займет более трех часов.
Так это получается у всех такая скорость работы движка? Я думал это я что-то не так сделал…
Для моей задачи ставить удаление на cron не подходит. Тогда буду оптимизировать: одним запросом удаляю все топики из БД по ID… а в задания cron ставлю в очередь удаление кешей топиков…
Правильно мыслю?
Прошу прощения если вопрос глупый.
А $this->User_GetUserCurrent(); не сильно нагружает? просто в классе User он же и так получает это значение:
public function Init() {
$this->oMapper=Engine::GetMapper(__CLASS__);
/**
* Проверяем есть ли у юзера сессия, т.е. залогинен или нет
*/
$sUserId=$this->Session_Get('user_id');
if ($sUserId and $oUser=$this->GetUserById($sUserId) and $oUser->getActivate()) {
if ($this->oSession=$this->GetSessionByUserId($oUser->getId())) {
/**
* Сюда можно вставить условие на проверку айпишника сессии
*/
$this->oUserCurrent=$oUser;
}
}
Нельзя его вытащить, например как то так: this->User->oUserCurrent?
Идея тут может быть только одна… ковырять все модули и вместо копирования файлов делать закачку на FTP сервер… я думаю кто-то в любом случае это делал, т.к. это один из первых шагов в оптимизации нагрузки сервера, вот только вряд ли кто-то будет этим делиться. Я вероятно через несколько месяцев буду это делать, тогда выложу.
Получается чтобы перелопатить движек на PDO как я понимаю нужно переписать все мапперы, ведь так? Больше нигде же SQL запросы не посылаются?
А вообще конечно, на мой взгляд, для Livestreet на начальных стадиях развития проекта лучше брать VPS-сервер(хотя наверно это уже не раз тут обсуждалось).
Найти место где в скрипте создаются данные файлы и прописать там
где $mode те что нужны для конкретного хостинга.
А файлы которые есть сейчас, может удалить сам хостер.
Спасибо.
User.entity.class.php
Файл в includes:
Это всё понятно, но я хотел бы сделать как-то попроще. Допустим нам придется на одной странице раз 1000 спросить текущий это пользователь или нет, то тогда получится 1000 раз произойдет присваивание вида а мне кажется это будет совсем не оптимизировано(даст нагрузку). Как можно по другому это сделать?
после сохранения провести пользователя по страницам которые удаляют по 50 топиков например:
Идет сохранение данных (10% завершено) (а фоново (Ajax) по очереди вызываются страницы вида /deletetopic/?ids=1,2,3,4,5,6,7,8,9… перечисление удаляемых id...50)
У каждого пользователя есть некие дополнительные данные: рост, вес,… около 300 штук.
При редактировании пользователь проставляет галочки напротив нужных пунктов.
Где галочка стоит, то там надо создать топик(если он не создан) в персональном блоге, например: «мой рост 180 см». И дальше пользователи могут комментировать это дело.
Если галочка не стоит, то нужно удалить старый топик (если он имеется).
Мне показалось самым логичным для этого использовать именно создание/удаление топиков.
Или можно это реализовать легче?
Смотрите, пример: удаление блога с топиками — стандартная задача для движка. Предположим что у нас в блоге 100000 топиков, тогда если посчитать математически получается удаление займет более трех часов.
Так это получается у всех такая скорость работы движка? Я думал это я что-то не так сделал…
Для моей задачи ставить удаление на cron не подходит. Тогда буду оптимизировать: одним запросом удаляю все топики из БД по ID… а в задания cron ставлю в очередь удаление кешей топиков…
Правильно мыслю?
А $this->User_GetUserCurrent(); не сильно нагружает? просто в классе User он же и так получает это значение:
Нельзя его вытащить, например как то так: this->User->oUserCurrent?
Еще как-то можно оптимизировать?
Спасибо!