Доброго времени суток. Я сделал новостную ленту и теперь задался вопросом оптимизации кода и п.п. Вот например у меня есть повторяющиеся фрагменты кода, такие как запросы к БД, обработка встроенных тегов, постраничная навигация и др. Можно ли для каждого из них использовать функции, или есть ещё какие-нибудь эффективные средства? Важно ли число запросов к БД? Например в нескольких скриптах у меня есть по три запроса, это влияет на скорость работы? Сколько в среднем должен весить такой проект как новостная лента? Например на данный момент моя НЛ занимает 212 на диске. Возможно вы дадите и другие полезные рекомендации по данному вопросу...
Нужно. Только следует не забывать что функция должна выполнять логически завершенное действие Важно, но без фанатизма. 2 легких запроса бывает выгоднее 1го тяжелого. Но 1 тяжелый зачастую выгоднее 100 легких. Вобщем, нужно смотреть EXPLAIN в каждом конкретном случае. Влияет, но можешь на этом не заморачиваться. Оптимизировать надо то, что нуждается в оптимизации. А узнать это можно только с помощью профайлинга
Simpliest, наверное функции правильно хранить в отдельном файле, да? [/quote] Май инглиш ис нот вэри вэлл, к сожалению, а нет варианта на русском?
Не обязательно. В отдельном файле их нужно держать если они используются еще где-то в других файлах. У тебя всегда есть Гуглопоиск и Гуглопереводчик Вкратце - Скачать и установить http://sourceforge.net/projects/wincachegrind Поставить xdebug Установить эти две опции xdebug.profiler_enable xdebug.profiler_output_dir Перезапустить Apache Зайти в свое приложение, попользоваться ей как обычно. Запустить wincachegrind и смотреть в нем результаты из каталога указанного в xdebug.profiler_output_dir
Вот пример - у меня в разных файлах четыре таких запроса: [sql] $q = "SELECT COUNT(*) FROM comments WHERE id_news=".$row['id']; $q = "SELECT COUNT(*) FROM comments WHERE id_news=".$row['id']; $q = "SELECT COUNT(*) FROM comments WHERE id_news=$id"; $q = "SELECT COUNT(*) FROM comments WHERE id_news=$id";[/sql] О три таких: [sql] $q = "SELECT id, id_news, DATE_FORMAT(date_com,'%d-%m-%Y %H:%i')as date_reg, name_com, comm, new FROM comments WHERE id_news=$id ORDER BY id DESC LIMIT ".($page - 1)*$pnumber.",".$pnumber.""; $q = "SELECT id, id_news, date_com, DATE_FORMAT(date_com,'%d-%m-%Y %H:%i')as date_reg, name_com, comm, new FROM comments WHERE id_news=$id ORDER BY id DESC LIMIT ".($page - 1)*$pnumber.",".$pnumber.""; // Выбираем комменты, дата которых больше даты последнего визита $qr = "SELECT id, id_news, date_com, DATE_FORMAT(date_com,'%d-%m-%Y %H:%i')as date_reg, name_com, comm, new FROM comments WHERE UNIX_TIMESTAMP(date_com) >= ".$l_e." ORDER BY id DESC";[/sql] СтОит ли делать для них функции?