siv1987

siv1987
Рейтинг
427
Регистрация
02.04.2009
AutoBlogger:
Так и делал, ибо других вариантов нет. Не взлетело. Повторюсь, железо 10-летней давности, да и на тот момент оно топовым не было. Около сотни тысяч "просмотров" в день. Выдача на каждый просмотр - несколько сотен тысяч айтемов (оформлялись либо в виде HTML таблицы, либо в виде RSS фида).

Ок, предположим у вас в результате сотни тысяч итем-ов, и их фетчинг действительно занимает какое-то время. Но зачем советовать это ТС-у и приводить такой аналог, когда у него в результате будет максимум одна строка и селект более чем 100% будет происходить по первичному ключу? Ему не нужно сотню тысяч настроек сотни тысяч пользователей, ему нужно двадцать настроек одного конкретного пользователя.

ДЛЕ... не удивлюсь если сайт взломан.

AutoBlogger:
Файл содержит полный список айтемов и грузится по уникальному ID (совпадает с его именем). По содержимому уже делается выборка и вывод результатов (четыре поля на запись).

Primary key + ключ на эти четыре поля (если я правильно понял) и все это должно летать.

AutoBlogger:
И все зашуршало, ибо мускуль - реальный тормоз. Только не пытайтесь меня переубедить в этом )

Да, да, во всем виноват мускуль...

AutoBlogger:
Файл содержит полный список айтемов и грузится по уникальному ID (совпадает с его именем). По содержимому уже делается выборка и вывод результатов (четыре поля на запись). Очень похоже на то, что хочет реализовать ТС, только у него еще проще, ибо не нужно парсить записи внутри текстового файла.

Не очень похоже. А то, что хочет реализовать ТС вполне можно записать в БД как поля таблицы пользователя.

syrpo:

do {
pageid=myrow[pageid];

$result2 = mysql_query("SELECT * FROM pages_table WHERE id='$page_id'",$db);
$myrow2 = mysql_fetch_array($result2);

}
while ($myrow = mysql_fetch_array($result));

Курсы Попова? Тупая привычка использовать для фетчинга do-while и почти всегда неверная.

syrpo:
Если потом мне надо вытащить какие-то поля из таблицы содержания самых страниц (pages_table), где id страниц = полученным id из выше******енного запроса, то получается
надо делать select внутри selecta, или как лучше поступить?

http://ru.wikipedia.org/wiki/Join_(SQL)

SELECT p.*, f.* FROM users_fav f INNER JOIN pages_table p ON p.id=f.pageid WHERE f.userid=$user_id

или

SELECT p.* FROM (SELECT pageid FROM users_fav WHERE userid=$user_id) z INNER JOIN pages_table p ON p.id=z.pageid

в подзапросе можно использовать и ORDER, и LIMIT - все будет шустро выполнятся.

Dram:
Господа, модуль мне сделали, хочу проверить в боевых условиях, а не просто подставляя ip в скрипт.

А чем не устраивает этот вариант?

AutoBlogger:
Важно, что мускуль на том железе и с тем количеством трафика умирал просто мгновенно. С текстовыми же файлами проблем нет. Вообще никаких.

А покажите ради интереса структуру БД и запросы при которых умирал mysql.

AutoBlogger:
Если же нужно обработать одну единственную, прямой как дверь строковой список (или конфиг, уникальный для каждого юзера), то по простоте работы и оптимизации нагрузки, никакой равноценной замены обычным файлам тупо не существует.

А тогда тем более нет смысла извращаться. Никакого существенного прироста в скорости не получите, за то в гибкости разработке на оборот сильно потеряете.

---------- Добавлено 09.07.2013 в 18:40 ----------

AutoBlogger:
Я там выше конкретный пример привел, кстати.

Один из недавних примеров /ru/forum/800139

NerZool:
Помимо whitelist'a неплохо было бы сделать проверку наличия перед расширением точки и отсутствие внутри get-параметров. А то ведь "http://evil_site/evil_shit.js?var=.jpg" прекрасно исполняет содержимое http://evil_site/evil_shit.

NerZool, а что значит исполняет содержимое? Кто исполняет и что исполняет?

NerZool:
Да и вообще, можно похабрить и найти ссылки на отличные классы защиты

Нормальная защита - загружать картинки к себе на сервер или разрешить только с доверенных хостов.

AutoBlogger:
Не зря системы кэширования сайтов тоже сохраняют страницы в виде файлов, а не в виде записей в мускуле.

Системы кеширования разные бывают, от частичного кеширования в БД, то полной статике на файлах.

А нагрузку поможет сократить там, где нагрузка есть, и она связана с получением данных из mysql. Зачем это делать там где это не требуется?

AutoBlogger:
А чего там проектировать, если все влоб делается? Зашел юзер - считался конфиг. Если там же хранится дата посещения, то сразу же перезаписался. Изменились настройки, конфиг еще раз перезаписался. Все, телемаркет!

Ну раз "в лоб" чо же ТСу не использовать нормальную бд нежели извращаться на файлах?

Если все правильно спроектировать никаких "напрягов" и лишних телодвижений не будет. Если нет - то и файлы не помогут.

anton000:
Здравствуйте, задумал я сегодня реализовать настройки сайта. Подумал, что можно хранить их базе, и при авторизации пользователя, смотреть в базе настройки, и подставлять в php скрипты. Скажите такой способ приветствуется с точки зрения оптимизации?

Да нормально. Системные в любом случае будете хранить в БД, и пользовательские тоже можно.

mark2011:
Только представьте, на сайт зайдёт 1000 пользователей. Будете 1000 раз дёргать из базы настройки?

В этом нет ничего страшного, тем более если хотите сохраните актуальные настройки и назвать это действительно настройками.

anton000:
Скажите такой способ приветствуется с точки зрения оптимизации?

Есть права - чтение, запись и тд.

Есть группы - которые присваиваются нужные права.

Всего: 6568