За последние 24 часа нас посетили 55633 программиста и 1706 роботов. Сейчас ищут 993 программиста ...

Оптимизация кода и повышение производительности

Тема в разделе "PHP для новичков", создана пользователем amen, 28 окт 2009.

  1. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Доброго времени суток.

    Я сделал новостную ленту и теперь задался вопросом оптимизации кода и п.п.

    Вот например у меня есть повторяющиеся фрагменты кода, такие как запросы к БД, обработка встроенных тегов, постраничная навигация и др. Можно ли для каждого из них использовать функции, или есть ещё какие-нибудь эффективные средства?
    Важно ли число запросов к БД? Например в нескольких скриптах у меня есть по три запроса, это влияет на скорость работы?
    Сколько в среднем должен весить такой проект как новостная лента? Например на данный момент моя НЛ занимает 212 на диске.
    Возможно вы дадите и другие полезные рекомендации по данному вопросу...
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Нужно.

    Только следует не забывать что функция должна выполнять логически завершенное действие :)

    Важно, но без фанатизма. 2 легких запроса бывает выгоднее 1го тяжелого.
    Но 1 тяжелый зачастую выгоднее 100 легких.
    Вобщем, нужно смотреть EXPLAIN в каждом конкретном случае.

    Влияет, но можешь на этом не заморачиваться.

    Оптимизировать надо то, что нуждается в оптимизации.
    А узнать это можно только с помощью профайлинга
     
  3. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Simpliest, наверное функции правильно хранить в отдельном файле, да?

    [/quote]

    Май инглиш ис нот вэри вэлл, к сожалению, а нет варианта на русском?
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Не обязательно.
    В отдельном файле их нужно держать если они используются еще где-то в других файлах.

    У тебя всегда есть Гуглопоиск и Гуглопереводчик

    Вкратце -

    Скачать и установить
    http://sourceforge.net/projects/wincachegrind

    Поставить xdebug

    Установить эти две опции

    xdebug.profiler_enable
    xdebug.profiler_output_dir

    Перезапустить Apache

    Зайти в свое приложение, попользоваться ей как обычно.

    Запустить wincachegrind и смотреть в нем результаты из каталога указанного в xdebug.profiler_output_dir
     
  5. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Вот пример - у меня в разных файлах четыре таких запроса:

    [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]


    СтОит ли делать для них функции?