Latest post of the previous page:
--in progress--Альтернативный плагринг
- Andrey Budko
- Posts: 1203
- Joined: Fri 01 Apr, 2005 14:03
- Contact:
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
Убежало, раньше чем дописал.
Ну, положим, начинающий я только в PHP. С базами я работаю уже лет 20.Demiurg wrote:1. Исходники я посмотрел. Хотя я на PHP и не пишу, но грабли у начинающих одни и те же )
И? Вы полагаете это будет быстрее чем выбрать запись из базы по первичному ключу? Нафига бы тогда человечество вообще придумало DBMS?Demiurg wrote: Так что с оптимизации и начнем - Вы при запросе страницы плагина лезете в базу (функция db_read_plugin_by_id) потом генерируете блок с описанием для страницы. Однако как часто меняется эта информация? Есть ли нужда её постоянно брать из базы? Конечно нет. Достаточно один раз сгенерировать этот блок и сохранить в кэш (самое простое - на диск). Далее этот блок генерировать только при отсутствии его в кэше, и при обновлении информации о плагине в БД очищать кеш.
Для разработки мне достаточно локального компьютера. Я не собираюсь хостить альтернативный плугринг. Либо он станет официальным, либо умрет.Demiurg wrote:Еще Вы тут жаловались на хостинг - могу предоставить доступ к своему серверу, для разработки.
Смотрю. И что? Если вы посоветуете, как _легко_ сделать так, чтобы форма с GET не формировала пустых параметров, я поправлю. Но вряд ли это повлияет на быстродействие.Demiurg wrote:И еще, посмотрите на это: /plugins?category=%FD&name=&author=&tag=&tag=&tag=&updated=&sortby=1
Возможно. У меня нет опыта общения с монстроузными CMS.Demiurg wrote:2. 500 плагинов автоматом дают 1000 файлов (x86 и x64)
3. Я про MySQL знаю достаточно, и то что можно положить базу на таблице в 1000 строк - совсем не фантастика
Re: Новый плагринг
Разумеется. Статика всегда отдается быстрее чем динамика и требует меньше ресурсов.И? Вы полагаете это будет быстрее чем выбрать запись из базы по первичному ключу?
А Вы подумайте - почему во всех веб-проектах обращения к БД стараются заменить на обращения к кешу (например к memcached)?Нафига бы тогда человечество вообще придумало DBMS?
Именно из-за недостаточной скорострельности БД.
Входные параметры нужно проверятьСмотрю. И что?
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
Да при чем здесь статика/динамика? Вопрос в эффективности доступа к данным. Для БД хранить сотни тысяч/миллионы записей - вообще не проблема. Как у вас будет работать кэш с 100K файлов?Demiurg wrote:Разумеется. Статика всегда отдается быстрее чем динамика и требует меньше ресурсов.И? Вы полагаете это будет быстрее чем выбрать запись из базы по первичному ключу?
У меня есть гипотезы по этому поводу, но я их, пожалуй, озвучивать не буду. А вот Вы подумайте - почему во всех _не_ WEB проектах DBMS как то справляются с нагрузкой, а в WEB вдруг такая проблема. В чем же такая специфика WEB проектов?Demiurg wrote:А Вы подумайте - почему во всех веб-проектах обращения к БД стараются заменить на обращения к кешу (например к memcached)?Нафига бы тогда человечество вообще придумало DBMS?
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
Так они и проверяются. Сайт не сломался, вы получили собщение об ошибке, что Вам еще надо?Demiurg wrote:Входные параметры нужно проверять
- Andrey Budko
- Posts: 1203
- Joined: Fri 01 Apr, 2005 14:03
- Contact:
Re: Новый плагринг
У меня тупорылый безиндексный поиск "по всем полям по всем (200+) таблицам" с динамическим построением запроса к каждой таблице на полгигабайте данных на пеньке 3! лолшто, который, ко всему прочему, обслуживает еще несколько моих не менее тупорылых SMPP и HTTP сервисов и раздает интернет/почту на офис - выполняется мгновенно. Городить огород с кешированием, индексацией по частым запросам итд там, где и так все работает молнеиносно - это ж чистой воды онанизм, не? Возникнут проблемы - появится и решение.Max Rusov wrote:Да при чем здесь статика/динамика? Вопрос в эффективности доступа к данным. Для БД хранить сотни тысяч/миллионы записей - вообще не проблема. Как у вас будет работать кэш с 100K файлов?
Re: Новый плагринг
Прекрасно будет работать. Как работает хэш-таблица? Вот именно так и будет работать. К тому же это могут быть и не файлы, а memcached.Как у вас будет работать кэш с 100K файлов?
Интересный вопрос. Я даже призадумался. То, что БД в WEB узкое место у меня сомнения не вызывает, как и у многих других WEB-разработчиков. Но вот ПОЧЕМУ?В чем же такая специфика WEB проектов?
Как мне кажется, тут всё дело в цене. Т.е. можно сделать достаточно быструю СУБД (с кластеризацией и т.п.), но вот какова будет цена такого решения? Чую, намного дешевле поставить быстрый кеш на memcached и запрашивать данные из относительно медленной БД только один раз.
Еще тут в голову пришло - в ВЭБ очень жесткие требования по времени реакции на действия пользователя, тогда как в прочих системах пользователь может и подождать (хотя приятного в этом, конечно, мало).
А зачем пользователю это сообщение?Сайт не сломался, вы получили собщение об ошибке, что Вам еще надо?
И вот такой вариант: /plugins?category=&name='&author=&tag=&tag=&tag=&updated=&sortby=1
доказывает что данные не проверяются, т.е. есть SQL-инъекция
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
А дисковое пространство - оно бесплатное? Не жирно ли удваивать/утраивать объем базы данных? Еще раз повторю - БД _не_медленная_. Если кто-то не умеет писать эффективные SQL запросы - не стоит делать из этого далекоидущие выводы. А вообще - разговор какой-то академический. К плугрингу то это все каким боком? Вон старый Plugring - вообще на FoxPro. Как то выжил.Demiurg wrote:Интересный вопрос. Я даже призадумался. То, что БД в WEB узкое место у меня сомнения не вызывает, как и у многих других WEB-разработчиков. Но вот ПОЧЕМУ?
Как мне кажется, тут всё дело в цене. Т.е. можно сделать достаточно быструю СУБД (с кластеризацией и т.п.), но вот какова будет цена такого решения? Чую, намного дешевле поставить быстрый кеш на memcached и запрашивать данные из относительно медленной БД только один раз.
А зачем пользователь полез ручками править URL запроса? Ну, полюбуйся на это:Demiurg wrote:А зачем пользователю это сообщение?
http://forum.farmanager.com/search.php?keywords=%FD
Так лучше?
Re: Новый плагринг
Ладно, это отложим.К плугрингу то это все каким боком? Вон старый Plugring - вообще на FoxPro. Как то выжил.
Хотя память сейчас намного дешевле чем была еще совсем недавно, поэтому лучше иметь дубли информации и не ждать.
Чтобы сломать сайт, сделать дефейс и показывать это друзьям школьникам.А зачем пользователь полез ручками править URL запроса?
Проверка всех данных поступающих извне - это аксиома ВЭБ-программирования, т.к. SQL-инъекции сегодня умеют делать даже школьники, да и XSS вещь вполне реальная.
И еще по исходникам - если дизайн будет меняться, то стоит задействовать шаблонизатор, пока еще кода немного.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
Ну так я Вам уже ответил - сайт _не_сломался_. Вы получили _корректное_ сообщение об ошибке (первый раз). Вот сделаете дефейс - тогда и поговорим.Demiurg wrote:Чтобы сломать сайт, сделать дефейс и показывать это друзьям школьникам.
Впрочем, по поводу того что кавычки попадают в SQL запрос - согласен это бага. Поправлю.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
Примерчик бы на PHP. Я рыл в inet, но там даже блобы рекомендуется записывать прямым присвоением...Demiurg wrote:Подставляйте параметры в запрос через плейсхолдеры, и не будет таких проблем.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Новый плагринг
Да вообщем и так проблем нет. Нужно только не забывать маскировать строки. Где то забыл видимо. Посмотрю.