+1.08
Рейтинг
2.87
Сила

Илья

Да, спасибо, помогло!
Я думаю, что если проект не однодневный, а долгожитель, особенно с большой посещалкой то данная манипуляция будет оправдана. Да и далеко не в каждом проекте ввод мемкеша может значительно снизить нагрузку на БД.

Получается чтобы перелопатить движек на PDO как я понимаю нужно переписать все мапперы, ведь так? Больше нигде же SQL запросы не посылаются?
Тогда прошу прощения, за неправильный совет. На мастерхосте не хостился, но у тех у кого был раньше хостинг, если не ошибаюсь chmod был доступен.
А вообще конечно, на мой взгляд, для Livestreet на начальных стадиях развития проекта лучше брать VPS-сервер(хотя наверно это уже не раз тут обсуждалось).
Ну стоит посмотреть результаты тестов производительности, чтобы понять, что DBSimple не самый оптимальный вариант по нагрузке и скорости.
Общее решение для всех движков:
Найти место где в скрипте создаются данные файлы и прописать там
chmod ($filename, $mode);
где $mode те что нужны для конкретного хостинга.
А файлы которые есть сейчас, может удалить сам хостер.
Спасибо за подробное описание, всё понял.
Хорошо, я понял.

Спасибо.
Ну это-то да, код был бы примерно таким:
User.entity.class.php

public function isIm() {
        return UserIsIm($this->_aData['user_id']);
}

Файл в includes:
function UserIsIm($iUserId) { 
if($iUserId<1) return false;
$oUser=$this->User_GetUserCurrent();
if($oUser->getId()==$iUserId) return true;
else return false;
}


Это всё понятно, но я хотел бы сделать как-то попроще. Допустим нам придется на одной странице раз 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?
а можно как-то в плагине(модуле) получить доступ к переменной $oUserCurrent из класса User?
Немного оптимизировал:
$clean = array();
$clean[] = "blog_relation_change_{$user_id}";
foreach($arr as $id=>$yes)
{
$clean[] = "blog_relation_change_blog_{$id}";
$this->Cache_Delete("blog_relation_user_{$id}_{$user_id}");
}
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, $clean);

Еще как-то можно оптимизировать?
Ну это как бы понятно если перевести… но хотелось бы узнать как это используется… на сайте описания не нашел…
Да, отлично работает!
Спасибо!
Идея тут может быть только одна… ковырять все модули и вместо копирования файлов делать закачку на FTP сервер… я думаю кто-то в любом случае это делал, т.к. это один из первых шагов в оптимизации нагрузки сервера, вот только вряд ли кто-то будет этим делиться. Я вероятно через несколько месяцев буду это делать, тогда выложу.
netlanc, спасибо!
А что именно то нужно поправить, имена классов и т.п. я уже изменил с Friends на Fri… и всё-равно та же ошибка…