Просмотр темы - "[upd 1.2.7-2011] Пару тем для обсуждения."

  > Список тем > [upd 1.2.7-2011] Пару тем для обсуждения. Новая тема

Автор Текст
Den1xxx

 43 
Модератор
Послать ЛС
[upd 1.2.7-2011] Пару тем для обсуждения. - 12:35:49 28 Февраль 2011 Профиль
Завтра - старт проекта обновлений 2011.
2 Глобальных изменения для нового релиза я хотел бы обсудить.
1. Устранить повреждения файлов под нагрузкой.
Почему это возникает.
Например, в функции rcms_delete_files
Было в 1.2.7
Код:
while(!IGNORE_LOCK_FILES && is_file($file . '.lock')){
}
Стало в 1.2.7-2010
Код:
$count=200; $interval=0.05; //=10sec
while(!IGNORE_LOCK_FILES && is_file($file . '.lock') && ($count>0)){
sleep ($interval); 
$count=$count-1;
}
if ($count==0) {    //Если и 200 циклов не помогли,
unlink($file.'.lock');     //движок сам не справится, убиваем лок файл
trigger_error(__('Error occured').': function rcms_delete_files: '
 .$file.'.lock',E_USER_ERROR); 
return false;
}
Т. е. сейчас при одновременном заходе в функцию несколько раз (часто бывает при большой посещаемости), цикл уже может завершиться.
Цикл прерывается, если время исполнения превысит 10 сек, файл '.lock' стирается.
После обновления страницы по F5 пользователь может вернуться на сайт.
Практика показала - такая защита недостаточна. Да, сайт не блокируется как например сейчас на http://open....110mb.com/ Но при заходе 3-х пользователей одновременно файл обнуляется всё равно.
2 принципиально разных пути - как я это вижу.
1.1. Оставить в системе .lock файлы.
При превышении времени исполнения выводить сообщение для пользователя "Превышена допустимая нагрузка на сайт" и капчу. Одновременно выслать письмо админу с сообщением о ситуации. При вводе Пользователем капчи стереть .lock файл и вернуть сайту работоспособность.
Плюсы: Совместимость со всеми модулями CMS. Быстрая работа.
Минусы: Результат не гарантирован - всё на грани шаманства.
1.2. Использовать функцию flock() для блокирования доступа к файлам.
Функция появилась в PHP позже чем ReloadCMS 1.2.5, от которой унаследована блокировка файлов в 1.2.7.
Плюсы: Файлы не обнуляются - доказано на 2-х работающих у меня текстовых движках. Это стандарт блокировки файлов в PHP.
Минусы: Не работает в сетевых файловых системах(NFS). Не работает в FAT (да-да!). Ещё минус - потеряем совместимость с модулями CMS - придётся править все(!) модули.

2. Инсталлятор/деинсталлятор/апдейтер модулей и системы в целом.
Мне видится так.
2.1 Инсталлятор системы.
Скрипт <70кб закачивается на сайт и запускается. Отвечаете на пару вопросов - он скачивает движок и устанавливает его. Среди вопросов - какие модули ставим, логин, email и пароль админа.
2.2 Инсталлятор модулей. Проверяет наличие установленных модулей, их свежесть и совместимость. Предлагает обновить несвежие. Отдельно - ищет свежие неустановленные в svn.
2.3. Деинсталлятор модулей.
2.3.1 Вариант первый - удаляет ненужное с корнем.
2.3.2 Вариант второй - дописывает к расширению файла допустим ".del" - и система его потом не читает.

Предлагаю обсудить или предложить свои варианты.

Den1xxx

 43 
Модератор
Послать ЛС
17:54:12 06 Март 2011 Профиль
Ну что ж. Спасибо сообществу за неравнодушие и плодотворный обмен мнениями.
Выбираем:
Для блокировки - flock, как наиболее проверенный и соответствующий стандарту;
соответственно ВСЕ модули будут переделаны, так что о полной совместимости с 1.2.7 можно забыть.
Инсталлятор - делаю как думаю.
Деинсталлятор - удалять ненужное с корнем, не переименовывать.

Gregg

 9 
Пользователь
Послать ЛС
15:50:07 17 Март 2011 Профиль
впринципе если брать во внимание, что есть такая штука как ковыряние движка и добавление фич - не совместимы с проверкой на наличие новых модулей.

простой пример - я поставил себе простенькую галерею из раздела модели на офсайте, а инсталлятор модулей взял и обратно вернул старую галерею.

касательно же деинсталлятора модулей - мне кажется легче сразу удалить ненужное с корнем. если с друой стороны - это надо 777 атрибуты для того чтоб переименовать файл, так? а ничего что хостинги обычно ставят 755 по автомату?

Den1xxx

 43 
Модератор
Послать ЛС
18:25:01 17 Март 2011 Профиль
Цитата:
ковыряние движка и добавление фич - не совместимы с проверкой на наличие новых модулей
Это зависит от прямых рук программиста.
Вчера нашёл игрушку U95 - подводная лодка. Написана в 1995г. Идёт на всех Windows, от 95 до Win7.
Да, конечно она устарела и графика не та, но ведь не глючит, идёт на новых системах даже без включения режима совместимости.
И здесь можно так же. Удалил ненужную функцию - оставь заглушку. Я рейтинг вон удалил - сейчас надо не забыть заглушку поставить, а то у кого-то justforum работать не будет.

Комментировать

Вы не залогинены!