Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Что быстрее сессия или файлы?
 
 автор: him   (19.08.2010 в 09:17)   письмо автору
 
 

Всем доброго дня!!!

В админке создаю файл с массивом рубрик сайта :
<?
$page_arr 
= array();
$page_arr[L1] = array();
$page_arr[L1][id] = "1";
$page_arr[L1][pid] = "0";
$page_arr[L1][is_sect] = "0";
$page_arr[L1][rubric_type_id] = "0";
$page_arr[L1][name] = "Главная";
$page_arr[L1][position] = "000";
$page_arr[L1][template] = "0";

$page_arr[L8] = array();
$page_arr[L8][id] = "8";
$page_arr[L8][pid] = "0";
$page_arr[L8][is_sect] = "0";
$page_arr[L8][rubric_type_id] = "0";
$page_arr[L8][name] = "Регистрация";
$page_arr[L8][position] = "000";
$page_arr[L8][template] = "2";

$page_arr[L10] = array();
$page_arr[L10][id] = "10";
$page_arr[L10][pid] = "0";
$page_arr[L10][is_sect] = "0";
$page_arr[L10][rubric_type_id] = "0";
$page_arr[L10][name] = "Карта ops";
$page_arr[L10][position] = "000";
$page_arr[L10][template] = "1";

$page_arr[L1089] = array();
$page_arr[L1089][id] = "1089";
$page_arr[L1089][pid] = "0";
$page_arr[L1089][is_sect] = "0";
$page_arr[L1089][rubric_type_id] = "2";
$page_arr[L1089][name] = "Обращение";
$page_arr[L1089][position] = "004";
$page_arr[L1089][template] = "1";

$page_arr[L1188] = array();
$page_arr[L1188][id] = "1188";
$page_arr[L1188][pid] = "0";
$page_arr[L1188][is_sect] = "1";
$page_arr[L1188][rubric_type_id] = "2";
$page_arr[L1188][name] = "Совет ";
$page_arr[L1188][position] = "010";
$page_arr[L1188][template] = "1";
$page_arr[L1188][arr] = array();
$page_arr[L1188][arr][0] = "L1064";
$page_arr[L1188][arr][1] = "L1047";
$page_arr[L1188][arr][2] = "L1189";

... 
и т.д.


Т.е. я убрал запрос к базе а просто инклюдю этот файл и получаю массив рубрик.
Вот. В общем набралось уже 10000 строк в этом файле. Весит примерно 400 кБ

Думаю - что быстрее и лучше:
Создать сессию и помещать этот массив в нее и потом считывать уже из сессии
или оставить как есть, каждый раз инклюдить этот файл.
Сессии ведь тоже в файлах хранятся. Кто знает?
Заранее спасибо!!!

  Ответить  
 
 автор: Valick   (19.08.2010 в 09:40)   письмо автору
 
   для: him   (19.08.2010 в 09:17)
 

быстрее будет когда вернете все в БД.
про сессию вообще думать забудте

  Ответить  
 
 автор: him   (19.08.2010 в 10:15)   письмо автору
 
   для: Valick   (19.08.2010 в 09:40)
 

Т.е. вы хотите сказать что мускул вернет примерно 600 записей с 15 полями в каждой быстрее чем заинклюдит текстовый файл и уложит все в массив ?

Раньше до такой оптимизации так и было - каждый раз запрос к базе. После создания указанного массива - мне показалось что сайт залетал, пусть и не на много, но как то на душе легче стало за мускул и хостера.

  Ответить  
 
 автор: Valick   (19.08.2010 в 10:17)   письмо автору
 
   для: him   (19.08.2010 в 10:15)
 

а за оперативную память хостера волнений не возникло?:)
и что за страница такая 600 ссылок?

  Ответить  
 
 автор: sim5   (19.08.2010 в 10:16)   письмо автору
 
   для: him   (19.08.2010 в 09:17)
 

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

  Ответить  
 
 автор: him   (19.08.2010 в 10:22)   письмо автору
 
   для: sim5   (19.08.2010 в 10:16)
 

Дело в том что массив этот создается не из одной таблицы, а из нескольких. Мне кажется сгенерить файл в админе и это будет легче для хостера чем каждый раз ЗАПРОСИЩЕ ждать от мускула.

2Valick :
Насчет оперативки Вы правы, лишних описаний массива много. Надо сократить знаки
>>и что за страница такая 600 ссылок? - Перечень страниц с правами доступа и т.п.. На сайте их примерно 600 штук.

  Ответить  
 
 автор: sim5   (19.08.2010 в 10:26)   письмо автору
 
   для: him   (19.08.2010 в 10:22)
 

Ну да, а следующим этапом вашей оптимизации, надо полагать, будет перезапись содержимого базы в файлы - это 100% исключит ЗАПРОСИЩИ к базе.
А зачем вам тогда база, выбрасывайте ее, пишите все сразу в файлы, начиная с головы, кончая документами.

Оптимизацией структуры базы и запросов к ней нужно заниматься, а не переложением всего на файлы.

  Ответить  
 
 автор: him   (19.08.2010 в 10:34)   письмо автору
 
   для: sim5   (19.08.2010 в 10:26)
 

Мои наблюдения говорят о том что сайты медленно грузятся именно из-за многочисленных запросов к базе.
У себя я колчество запросов уменьшил до 3-5 на странице с учетом авторизации и прочих.
Мускул при большом количестве запросов помоему тормозит некоторые, дает приоритеты, и в целом получаем тормоз страниц.

  Ответить  
 
 автор: sim5   (19.08.2010 в 10:37)   письмо автору
 
   для: him   (19.08.2010 в 10:34)
 

Оптимизируйте запросы, коли ваши наблюдения говорят... Не можете, делайте свой сайт на статических страницах - вот тогда уж точно вам запросы мешать не будут.

  Ответить  
 
 автор: Valick   (19.08.2010 в 10:33)   письмо автору
 
   для: him   (19.08.2010 в 10:22)
 

вообще-то давным давно придумана постраничная навигация..
"выплевывать" 600 ссылок на одну страницу - это на мой взгляд лишняя нагрузка на базу и на оперативку хостера и на трафик юзера

  Ответить  
 
 автор: him   (19.08.2010 в 10:36)   письмо автору
 
   для: Valick   (19.08.2010 в 10:33)
 

600 страниц я не вывожу. Я только имею массив доступа к страницам.
Юзверь заходит - имеет права доступа.
Как я ему покажу куда ему можна ? куда нет?

  Ответить  
 
 автор: Valick   (19.08.2010 в 10:41)   письмо автору
 
   для: him   (19.08.2010 в 10:36)
 

огого....
странный у Вас подход (если не сказать иначе)
обычно юзер наделяется определенными правами, а уж проверка на доступность страницы определяется на самой странице только после непосредственного запроса этой самой страницы.

  Ответить  
 
 автор: him   (19.08.2010 в 10:42)   письмо автору
 
   для: Valick   (19.08.2010 в 10:33)
 

Еще: страницы - это не одного типа страницы, там есть и разные блоки новостей, сообщений, заказов , текстовых страниц и т.п.
В шаблоне сайта могут быть любые ссылки в любом месте на любые страницы.
Как я должен узнать что можна юзверю показывать или нет в зависимости от страницы? Вот и имею массив всех страниц сразу.
Хотя вообще надо над этим подумать.

  Ответить  
 
 автор: Valick   (19.08.2010 в 11:06)   письмо автору
 
   для: him   (19.08.2010 в 10:42)
 

у Вас блоки, сообщения, заказы, я так понимаю храняться в базе и соответственно имеют какой-то идентификатор уровня доступа, вот и выборку нужно делать по факту имея уровень доступа(+ еще какие-то критерии выборки) пользователя, который обычно записывается в сессию после авторизации.

  Ответить  
 
 автор: him   (19.08.2010 в 11:19)   письмо автору
 
   для: Valick   (19.08.2010 в 11:06)
 

Хорошо! Буду думать!
Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования