$sql = mysql_query("SELECT * FROM `cat` WHERE `id_cat`='0'");
while($m=mysql_fetch_assoc($sql)){
echo'<a href="'.URL.'/cat.php?id='.$m['id'].'">'.$m['name'].'</a> ('.mysql_result(mysql_query("SELECT COUNT(*) FROM `files` WHERE `id_cat`='".$m['id']."'"), 0).')';
}
GEN: 0.0195cek.
GEN: 0.0179cek.
GEN: 0.0175cek.
GEN: 0.0169cek.
GEN: 0.017cek.
В общем генерация крутится возле 0.017
Так вот, если убрать этот код:
('.mysql_result(mysql_query("SELECT COUNT(*) FROM `files` WHERE `id_cat`='".num($m['id'])."'"), 0).')
То ->
GEN: 0.0059cek.
GEN: 0.0064cek.
GEN: 0.0062cek.
Так вот, возможно как то и посчитать, и сохранить генерацию?
Может быть обьединить этот запрос:
$sql = mysql_query("SELECT * FROM `cat` WHERE `id_cat`='0'");
while($m=mysql_fetch_assoc($sql)){
}
Или как лучше действовать в такой ситуации, чтобы вывести категории, и посчитать кол-во файлов в них 
я бы, заюзал кеш, например на 30 минут, после 30 минут кеш перезаписывается)
посчитал, сформировал, записал результат, и потом хоть 1000 раз запрашивай цикл
mazaHELL, для скрипта[Портфолио] кеширование не уместно
P.S.Посоветуй кешер
Istsam, если неуместно тогда насилуй БД)
я использую только memcache чего и всем советую
добавлено спустя 1 минуту:
Istsam, если хочешь можно вместо кешера заюзать сериализацию данных. Сформировал массив, сериализнул. запихнул, либо в файл либо в бд, и тогда по нужде ансериалайзишь и выводишь как душе угодно
Генерация нормальная, запросы тоже, кэш, по сути, не нужен (если, конечно там не будет нескольких сотен категорий). Единственное что не хорошо - это смесь бизнес логики, данных и отображения. Отдели хотя бы вид от всего остального.
27 Апр 2011, 12:51 $sql = mysql_query("SELECT * FROM `cat` WHERE `id_cat`='0'");
$result = array();
while( $m = mysql_fetch_assoc($sql))
{
$result[] = array($m['name'],mysql_result(mysql_query("SELECT COUNT(*) FROM `files` WHERE `id_cat`='".$m['id']."'"), 0));
}
//пихаешь в БД
// unsert into `value`='".serialize($result)."' ////
// запрашиваешь из бд
$result = unserialize($res['value']);
// делаешь что угодно с массивом через foreach()
добавлено спустя 1 минуту:
Ant0ha, ты прикинь зашли к тебе на страницу много юзеров/ботов/поисковиков и давай насиловать твою БД )))
А вообще лучше сделать модель, в ней метод
public function getCategories()
{
$result = (запрос на получение категорий);
$categories = array();
while($category = mysql_fetch_array($result)) {
$category['count_items'] = (запрос на получение количества работ);
$categories[] = $category;
}
return $categories;
}
В таком случае ты запросто можешь кэшировать результат.
mazaHELL, тоже самое можно сказать про каждый скрипт.
Ant0ha, не в каждом скрипте запрос + запрос в цикле... для кого то это норма..но не для меня
27 Апр 2011, 12:59