Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Организация ЧПУ

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
dropoff
Отправлено: 26 Октября, 2011 - 07:14:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Доброго времени суток!

Как лучше организовывать ЧПУ в движке с большой кучей контента и с учетом достаточно высокой посещаемости?
Сейчас там нет единой точки входа, но это я поправляю. Все будет через index.php

Если делать без правил в htaccess, и с REQUEST_URI, то как лучше запрос делать на выборку из БД?
Типа WHERE url = $url или LIKE использовать?

Может есть у кого какой-то класс не сложный или функция для роутинга?
 
 Top
Viper
Отправлено: 26 Октября, 2011 - 07:33:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




не url, а alias.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
tuareg
Отправлено: 26 Октября, 2011 - 07:38:25
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Вот ссылка про ЧПУ http://forum.php.su/topic.php?fo...mp;v=#1313051903
На счет БД.
Если есть возможность:
Сделайте дополнительное поле crs тип int()
И при внесении/изменении через триггеры или сам запрос в это поле вносите CRC32(`URL`) и сделайте по нему индекс
Тогда запрос будет SELECT .... WHERE crs=CRC32(`URL`) AND url=`URL`;
Если нет такой возможности:
Тогда SELECT .... WHERE url=`URL`;
На счет индекса по нему, тут сложно, сделайте, но он может оказаться очень большим если размер не критичен, тогда делайте
 
 Top
dropoff
Отправлено: 26 Октября, 2011 - 18:55:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




tuareg, спасибо.

Поле crs сделать, в принципе, можно.
А большая вероятность того, что данные будут не верны, чтобы еще и контрольные суммы сверять?
 
 Top
tuareg
Отправлено: 26 Октября, 2011 - 20:15:18
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Суть не в том что данные будут не верны, а в том что Вы сделаете индекс по полю типа int. Он занимает гораздо меньше места
 
 Top
dropoff
Отправлено: 26 Октября, 2011 - 21:15:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Все. Понял наконец!

Хорошо.

Тогда такой вопрос.
А если сделать отдельную таблицу для УРЛов всех типов данных.
Например таблице page_url такой структуры

id - ну тут понятно
content - тип контента. например: news, articles, producs...
alias - УРЛ. (обзову так, по совету Viper ;)
crs - CRC32()

в таблице, например news, заносить в поле alias - ID соответствующее в таблице page_url
а потом в запросе JOIN'ить таблицу page_url.

Я это к чему. Тогда можно будет реализовать еще и редактирование УРЛ'ов из админки.
Сильно такой подходит увеличит нагрузку?

С CRC32 смущает вот что. Если, к примеру, чел захочет сменить УРЛ через PMA. Тогда уже он не будет совпадать с контрольной суммой. А вероятность того, что кто-то будет это делать очень высока.
 
 Top
tuareg
Отправлено: 27 Октября, 2011 - 08:26:37
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




dropoff --->> Если, к примеру, чел захочет сменить УРЛ через PMA.
Вот я не понял??? Поподробнее объясните пожалуйста с примером.
Если делать через 2 триггера(1 первый триггер сработает после вставки, а второй после UPDATE) то как бы кто-то не изменял URL он все равно пересчитает CRS.

На счет таблицы (вот тут просто мое мнение)
Я бы сделал также, но только добавил бы поле таблица( в вашем случае если каждому типу поля content соответствет одна таблица тогда не надо), где указывал бы к какой таблице относится данный URL. И в процедуре MySQL простым запросом искал есть ли такой URL и если есть выводил id и таблица и если есть вторым запросом выводил данные. В принципе можно и без процедуры, а 2 запроса.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT id,TABLE FROM TABLES WHERE .....
  3.  

Потом уже зная id,table сделать
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT ... FROM TABLE WHERE id_url=url
  3.  


Почему так? Очень просто если будет много информации то тогда запрос на получение будет следующим
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT id,TABLE FROM url LEFT JOIN news ON url.id=news.url LEFT JOIN t1 ON url.id=t1.url
  3. ....
  4. LEFT JOIN tn ON url.id=tn.url и т.д
  5.  

В данном случае ИМХО оптимальней сделать 2 простых запроса

(Отредактировано автором: 27 Октября, 2011 - 09:27:35)

 
 Top
tuareg
Отправлено: 27 Октября, 2011 - 10:34:32
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Насчет РМА--->>> триггеры
Зачем изменять что-то через PhpMyAdmin если есть админка?
Плюс если будет какая-то дополнительная логика например
создаю новую текстовую страницу заполнил все поля
если мы берем 2 таблицы
в первой--->url и.д
во второй ----> сам контент
Тогда сохранение будет выглядеть так: выполнить запрос на вставку в таблицу с url---->>>Потом узнать id последней записи в таблицу с url------> выполнить запрос в таблицу с контентом
(Тут я не указал еще необходимость на проверку уникальности URL.)
Каким образом это просто сделать через РМА я не знаю.
 
 Top
dropoff
Отправлено: 27 Октября, 2011 - 19:20:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Цитата:
Зачем изменять что-то через PhpMyAdmin если есть админка?

ну мало ли кому, что в голову взбредет. Двиг будет доступен для скачивания. И не факт, что кто-то не полезет менять УРЛы в phpmyadmin или еще что-то...

Набросал пару табличек

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `c_news` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `title` varchar(255) NOT NULL,
  4.   `text` text NOT NULL,
  5.   `date_added` date NOT NULL,
  6.   PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  8.  
  9. INSERT INTO `c_news` (`id`, `title`, `text`, `date_added`) VALUES
  10. (1, 'Первая новость', 'Описание первой новости', '2011-10-27'),
  11. (2, 'Вторая новость', 'Описание второй новости', '2011-10-27');
  12.  
  13. CREATE TABLE IF NOT EXISTS `c_page_url` (
  14.   `id` int(11) NOT NULL AUTO_INCREMENT,
  15.   `content` varchar(150) NOT NULL,
  16.   `content_id` int(11) NOT NULL,
  17.   `url` varchar(255) NOT NULL,
  18.   `crs` int(11) NOT NULL,
  19.   PRIMARY KEY (`id`)
  20. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  21.  
  22. INSERT INTO `c_page_url` (`id`, `content`, `content_id`, `url`, `crs`) VALUES
  23. (1, 'news', 1, 'pervaya-novost', 0),
  24. (2, 'news', 2, 'vtoraya-novost', 0);
  25.  


При добавлении новости в c_page_url пишем
content - news
content_id - id новости
url пишем tittle через функцию транслита, перед эти проверяя на уже добавленные. (если уже есть такой url, то добавляем ему +1 в конце)

Т.е. таблица c_news по факту не содержит в себе никаких url'ов

К примеру в запросе у нас
site.ru/pervaya-novost

$getUrl = SELECT * FROM c_page_url WHERE content = 'news' AND url = 'pervaya-novost' - первый запрос

далее дергаем новость
$getnews = SELECT * FROM c_news WHERE id = $getUrl['content_id'] - второй запрос

Я правильно понял?
Тут главное, чтобы запрос быстро выполнялся, как вы понимаете.
На выборку одной новости это не критично. А вот, если тянуть список новостей по категориям + постраничность...
 
 Top
tuareg
Отправлено: 28 Октября, 2011 - 02:15:59
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




На счет PMA. Вот есть страниц 500 к примеру. Я начинаю править url страницы.
Как вы думаете есть шанс, что я исправлю так что у меня получится что 2 страницы с одинаковым URL?
И как тогда будет работать движок?
Насчет всех запросов тут напрашиваются процедуры MySQL.
Они по-моему начиная с версии MySQL 5.0 (тут не уверен) не требуют ни каких SUPER прав. Они нормально будут работать.
На счет запросов
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM c_page_url WHERE content = 'news' AND url = 'pervaya-novost'
  3.  

А откуда Вы будете знать что это news? Улыбка
Я бы сделал так
Таблицы
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `url` (
  3.   `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
  4.   `rus_title` char(100) NOT NULL DEFAULT '',# название страницы
  5.   `alias` char(50) NOT NULL DEFAULT '', #url
  6.   `title` char(255) NOT NULL DEFAULT '', #начиная с этого поля и до hide все для seo
  7.   `description` char(255) NOT NULL DEFAULT '',
  8.   `keywords` char(255) NOT NULL DEFAULT '',
  9.   `hide` enum('show','hide') NOT NULL DEFAULT 'show',
  10.   `crs` int(11) NOT NULL,
  11.   `tip` char(20) NOT NULL DEFAULT '',# тип новости, магазин и т.д
  12.   PRIMARY KEY  (`id`),
  13. ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
  14.  
  15. CREATE TABLE IF NOT EXISTS `c_news` (
  16.   `id` int(11)  UNSIGNED NOT NULL,# Сделав поле беззнаковым мы #увеличим его значение приблизительно 2 раза
  17.   #title здесь не нужен он нужен в таблице url
  18.   `text` text NOT NULL,
  19.   `date_added` date NOT NULL,
  20.   UNIQUE KEY `id` (`id`)
  21. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
  22.  

Сделав таблицу "фиксированной" (не содержащей поля типа varchar, text, blob) мы чуть выиграем в скорости ее работы.
Поле `hide`---> наверняка будет возможность скрыть какую-то страницу от пользователей? Улыбка
Тут тоже я всегда перечисляю какие поля мне нужны в запросе. Т.е не * ,а `id`,`url` и т.д
У нас нет индексов кроме PRIMARY KEY. Пока приложение толком не готово я обычно их не ставлю.
Да и еще сразу пока не забыл лучше,если у нас не будет отрицательных числовых значений, сделать числовые поля беззнаковыми (unsigned)
Вот мы подготовились и сделали таблицы
Теперь запрос на сохранение/редактирование будет состоять из 3 этапов
1 этап:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. сохранение: SELECT COUNT(*) FROM `url` WHERE crs=CRS32('pervaya-novost') AND `alias` = 'pervaya-novost' LIMIT 1;
  3. редактирование с id=2: SELECT COUNT(*) FROM `url` WHERE crs=CRS32('pervaya-novost') AND `alias` = 'pervaya-novost' AND `id`!=2 LIMIT 1;
  4.  

Если COUNT(*)>0, т.е страница с таким url уже существует возвращаем ошибку
Если нет
2 этап:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  INSERT INTO `url`(`id`,`rus_title`,`alias`,`title`,`description`,`keywords`,`crs`,`tip`)
  3.  VALUES ('.$id*.','".$rus_title."','".$url."','".$title."','".$description."','".$keywords."',CRS32('".$url."')**,'".$tip."')
  4. ON DUPLICATE KEY UPDATE `rus_title`=VALUES(`rus_title`),`alias`=VALUES(`alias`),`title`=VALUES(`title`),`description`=VALUES(`description`),
  5. `keywords`=VALUES(`keywords`),`crs`=CRS32('".$url."'),`tip`=VALUES(`tip`);
  6.  

* если новая новость -->0, если редактируем id
** находим контрольную сумму. Если будут триггера тогда это поле вставлять не надо
*** это тип(таблица) в которой хранится контент и т.д
3 этап:
$id=>>> Если делали новую страницу находим последний сгенерированный id, редактирование id нам известен
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  INSERT INTO `c_news`(`id`,`text`,`date_added`)
  3.  VALUES ('.$id.','".$text."','".$data."')
  4. ON  DUPLICATE KEY UPDATE  `text`=VALUES(`text`),`date_added`=VALUES(`date_added`);
  5.  

Запросы на вывод данных
$url-->запрошенный url
$table---> `tip`
$id-->`id`
1 этап:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT `id`,`rus_title`,`title`,`description`,`keywords`, `tip` FROM url WHERE hide='show' AND crs=CRS32('".$url."') AND url =$url LIMIT 1;
  3.  

Если нет 404.html
есть ответ(можно посчитать кол-во полученных ответов 0 или 1)
2 этап
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT `text`,`date_added` FROM '.$table.' WHERE id=$id;
  3.  

P.S Сейчас еще рано ставить индексы. Любая здоровая критика приветствуется Улыбка
P.S.S Это всего лишь пример, нет проверок и экранирования, но это не та тема Улыбка

(Отредактировано автором: 28 Октября, 2011 - 03:07:10)

 
 Top
dropoff
Отправлено: 28 Октября, 2011 - 12:31:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Цитата:
На счет PMA. Вот есть страниц 500 к примеру. Я начинаю править url страницы.
Как вы думаете есть шанс, что я исправлю так что у меня получится что 2 страницы с одинаковым URL?
И как тогда будет работать движок?

Ну, я имел ввиду не все URL'ы править ) Просто бывают ситуации когда человек и там умудриться полазить...) Проконтролировать, то это не возможно. Соответственно, нужно предусмотреть и такой вариант.

Цитата:
А откуда Вы будете знать что это news?

Вот тут я конечно упустил один момент и не поделился им.
Типы данных определять по "ключу" в ссылке.
Пример: site.ru/news/category-name/news- name
REQUEST_URI вернет массив (после обработки конечно же)
вида
PHP:
скопировать код в буфер обмена
  1.  'news',
  2.  'category-name',
  3.  'news-name'
  4. )


Вот тут как раз и тянуть из него news, определять категорию и новость.

news - все новости
news/category-name - категория новости
news/category-name/news-name - новость

articles - все статьи
articles/category-name - категория статей
articles/category-name/articles- name - статья

Цитата:
Поле `hide`---> наверняка будет возможность скрыть какую-то страницу от пользователей?

Да. Сейчас в виде простого status - 0\1, выключено\включено

в index.php примерно

Что-то такое в голове Радость (грубый вариант, для примера)
PHP:
скопировать код в буфер обмена
  1. $url = array(); //тут массив из REQUEST_URI
  2.  
  3. if (empty($url[0]))
  4.         include 'main_page.php'; // главная
  5. else
  6. {
  7.         $mod = MODULES.$url[0].'/'.$url[0].'.php';
  8.         if (is_file($mod))
  9.         {
  10.                 include $mod;
  11.                 /*
  12.                         смотрим, что пришло из $url, и если есть такой мод - грузим его. Новости и статьи как раз и будут в виде модулей
  13.  
  14.                         вернет категорию новостей или статей. в зависимости от того, что у нас в $url[0]
  15.                         SELECT * FROM c_page_url WHERE content = $url[0] AND url = $url[1]
  16.  
  17.                         вернет новость или статью
  18.                         SELECT * FROM c_page_url WHERE content = $url[0] AND url = $url[2]
  19.                 */
  20.         }
  21.         else //если мода нет, то это товар. т.е. ссылка вида site.ru/products-cat/product-name
  22.                 include 'products.php';
  23.                         /*
  24.                         вернет категорию
  25.                         SELECT * FROM c_page_url WHERE content = 'products' AND url = $url[0]
  26.  
  27.                         вернет товар
  28.                         SELECT * FROM c_page_url WHERE content = 'products' AND url = $url[1]
  29.                         */
  30. }

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

Вот тут я как раз и застрял.
В таком случае получается, что название категории новостей не может совпадать с названием новости и т.д... Так как все URL'ы записаны в одной таблице.

В таблице c_page_url нужны только URL'ы (ну там id контента еще и определяющую контента (news,articles...)). В противном случае нужно будет весь двиг переделывать)

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

В реале их сейчас минимум 25. А если еще с УРЛ'а ми по два запроса, то очень много выходит((

Может тут проще кэшировать (в каком-то удобном виде в файл) запрос на URL, а потом из него дергать, что нужно?
Хотя, если контента будет несколько сот тысяч, то файл будет не маленький в объеме.
 
 Top
tuareg
Отправлено: 28 Октября, 2011 - 13:07:49
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Цитата:
Просто бывают ситуации когда человек и там умудриться полазить...) Проконтролировать, то это не возможно. Соответственно, нужно предусмотреть и такой вариант.
Триггеры, и хоть как правьте он пересчитает эту сумму.
dropoff Давайте определимся. Что мы хотим? Улыбка
Хотим ли мы написать новое?
Хотим ли мы исправить то что есть?
И от этого двигаться
Цитата:

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

Зачем тут везде по 2 запроса? Некоторые можно вообще объединить в 1 Например
Вывод 5 рекомендуемых товаров - 2 запроса
Вывод 5 новых товаров - 2 запроса
Вывод 5 самых продаваемых товаров - 2 запроса
Это скорее всего можно через 1 запрос вывести.
Потом поймите правильно, простой запрос он на то и простой, что выполняется быстро+есть шанс что он попадет в КЭШ MySQL, тогда он вообще второй раз выполняться не будет.
 
 Top
dropoff
Отправлено: 28 Октября, 2011 - 19:01:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Цитата:
Давайте определимся. Что мы хотим?

Исправить то что есть. Новое делать - очень много переписывать.

Самое простое, что можно сделать.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $url = preg_replace("/\/+/",'/', $_SERVER['REQUEST_URI']);
  3. $url = preg_replace("/^\/(.*)\/?$/U", '\\1', $url);
  4. $url = preg_replace("/^(.*)\?.*$/U", '\\1', $url);
  5. $url = explode("/", $url);
  6.  
  7. switch ($url)
  8. {
  9.         case 'news':
  10.                 var_dump($url); break;
  11.  
  12.         default:
  13.                 var_dump($url);
  14. }
  15. ?>
  16.  
  17. <ul style="float:left;width:150px;">
  18.         <li><a href="/">index</a></li>
  19. </ul>
  20. <ul style="float:left;width:150px;">
  21.         <li><a href="/news">news</a></li>
  22.         <li><a href="/news/category-name">news category-name</a></li>
  23.         <li><a href="/news/category-name/news-name">news news-name</a></li>
  24. </ul>


Но это очень банальный вариант на мой взгял.

Цитата:
Некоторые можно вообще объединить в 1 Например
Вывод 5 рекомендуемых товаров - 2 запроса
Вывод 5 новых товаров - 2 запроса
Вывод 5 самых продаваемых товаров - 2 запроса
Это скорее всего можно через 1 запрос вывести.

Все одним? Вы уж простите, у меня с запросами тугова-то пока)

Цитата:
Потом поймите правильно, простой запрос он на то и простой, что выполняется быстро+есть шанс что он попадет в КЭШ MySQL, тогда он вообще второй раз выполняться не будет.
 
 Top
tuareg
Отправлено: 29 Октября, 2011 - 08:10:48
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Я же Вам в первом посте дал ссылку там все описано про ЧПУ.
Я не так сильно ориентируюсь в PHP, чтобы Вам в этом помочь. На счет запросов MySQL выкладывайте структуру Таблиц и что надо сделать помогу.
 
 Top
Мелкий Супермодератор
Отправлено: 29 Октября, 2011 - 09:33:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




tuareg пишет:
Потом поймите правильно, простой запрос он на то и простой, что выполняется быстро+есть шанс что он попадет в КЭШ MySQL, тогда он вообще второй раз выполняться не будет.

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

dropoff пишет:
В реале их сейчас минимум 25. А если еще с УРЛ'а ми по два запроса, то очень много выходит((

Кэшируйте запросы. На вас никто не обидится, если блок новостей опоздает обновиться на пару минут.
+ тут действительно не нужно столько запросов.


-----
PostgreSQL DBA
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB