Статья для новичков. По сети уже давно ходят статьи по оптимизации PHP-кода. Причем в большинстве своем это статьи десятилетней давности, рассчитанные на PHP 3. (далее...)

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

Архитектура Вконтакте
Архитектура Google
Архитектура Facebook
Архитектура Flickr
Архитектура Amazon
Архитектура YouTube
Архитектура Friends for Sale
Архитектура Wikimedia
Архитектура Digg
Архитектура LiveJournal
Архитектура Twitter
Архитектура Google Talk
Архитектура 37signals
Архитектура Mailinator
Архитектура LinkedIn
Архитектура MySpace
Архитектура Stack Overflow
Архитектура Plenty of Fish

В MySQL есть достаточное количество встроенных функций и фич, которые упрощают код. К сожалению, не все программисты знают об этом и используют свои «велосипеды». читать дальше →

SQL_CALC_FOUND_ROWS

Любой web-программист сталкивался с постраничным выводом информации. Например, в таблице лежит 1000 новостей и нужно выводить их по 10 штук на странице, а внизу вывести листалку страниц.
Программист пишет 2 запроса:

1) SELECT * FROM news WHERE activity=1 LIMIT 0, 10 // выборка записей
2) SELECT COUNT(*) FROM news WHERE activity=1// узнаем кол-во всех новостей

Второй запрос нужен для вывода листалки. Однако в MySQL есть достаточно удобная возможность объединения этих двух запросов в один. подробнее про SQL_CALC_FOUND_ROWS

High Performance MySQL, Second Edition Вышло 2-ое издание книги High Performance MySQL. Во-первых книга была почти целиком переписана. Во-вторых ее также можно назвать книгой сообщества, поскольку авторы собрали вместе официальные, а также просто используемые сообществом средства, чтобы объяснить на их примере как работает MySQL. Многие из тем также обсуждались в комьюнити: оптимизация и индексирование, масштабируемость, расширенные возможности SQL, производительность. Кроме того, в книге авторы обясняют как писать технические книги.

скачать High Performance MySQL, Second Edition (англ, pdf)

Задача: выбрать 5 случайных активных пользователей из таблицы user
Решение:
SELECT userid, user_name FROM user WHERE activity=1 ORDER BY RAND() LIMIT 5

ORDER BY RAND() - удобная конструкция для выборки случайных записей из таблицы. Она не очень быстрая, но удобная в случае выборки более одной случайной записи, и для небольших таблиц то, что доктор прописал. Для таблицы 20 000 записей вышеприведенный запрос занимает 0.02 с.

Вот такой интересный способ выбора случайной записи встречается иногда :-)

$res = mysql_query(‘SELECT userid, user_name FROM user WHERE activity=1’);
$j = rand(1,mysql_num_rows($res));
$i=1;
while($row=mysql_fetch_array($res)){
    if($i==$j){
        break;
    }
    $i++;
}

Совершенный код Первое издание этой книги считалось одним из лучших практических руководств по программированию более 10 лет . Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО — с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство.

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

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

скачать книгу (20 Mb, формат djvu)