Ребята, посоветуйте, пожалуйста, литературу или ресурсы, где подают в нормальном виде информацию о том, как правильно написать крупномасштабный проект с высокой посещаемостью (>10k в день). Надеюсь, в силу массовой распространенности PHP есть смысл писать именно на нем. В частности, интересует механизм формирования кеша, какой HTTP-сервер лучше использовать, как его настроить, какое подобрать железо, и т. п. Спасибо
kiosuki php-fmp + nginx + memcache/redis = profit ну и сетевые настройки оси надо поточить, чтобы она позволяла такое. ну и 10к в день != высоконагруженый проект такое гавно даже апач выдержит.
Спасибо за совет. Ну если вы писали что-то более серьезное, снимаю шляпу. На самом деле таких "самозванцев", которые орут, что для них написать проект с посещаемостью в 100к и более - плевок. А когда начинаешь с ними работать, они не знают даже что такое Singletone или не понимают разницу в производительности между "..." и '...' Но я думаю, Вы не из таких )
это байтодроч ебланов из пхп4. реальная нагрузка в любом проекте идет ТОЛЬКО от БД, ее и НАДО ОПТИМИЗИРОВАТЬ, а я описал ситуацию когда у вас 80% данных идет из кеша, возможно с небольшими изменениями, типа соц сеть/апи какие либо. неплохо связать nginx - memcache если есть статичные полностью кешированные данные, такие как блоки рекордных таблиц, посетитиелей каких либо. для html'ных соц сетей можно использовать nginx + блочное ssi с кешированием на нгинксе я поклоняюсь сысоеву считаю его героем 2012, а не очередной жумлой хуюмлой и апачем срачем что такое сингтон? это из музыки?
Ну я стараюсь основательно подходить ко всему. Поэтому, даже "..." оптимизирую. У меня, например, сейчас ситуация, когда работа с БД занимает 10-20% времени благодаря двум уровням кеша: кеш самих SQL-запросов и кеш возвращаемых результатов. Остальное время - PHP. Я не могу себя назвать профессионалом, но стремлюсь к такому. И основы кеширования на уровне web-сервера мне известы. Но о всяких нюансах мало кто говорит. Например, при блочном кешировании некоторые блоки являются вызовами бекенда - несколько раз во время формирования всей страницы. Как решить вопрос быстродействия, если поднять бекенд с кучей библиотек - куча времени? Повесить PHP-демон на порт, отдающий тот или иной блок? Начинаешь спрашивать на форумах, блогах - мороз. P.S. Почему герой 2010? ) P.S.2 Ребят, поудаляйте мусор, пожалуйста... Я понимаю, что вы хорошие знакомые, но топик засоряется )
igordata не, с попами не сплю, забросил это занятие пару лет назад, а вот с игорем бы подумал наверное ... )
я уже сказал nginx + php-fpm, пхпфпм - cgi спаунер, который обрабатывает запросы в режиме очереди, не выгружая пхп код из памяти, ну и его настраиваем, например на один рабочий процесс ставим 5000 запросов, потом смерть воркеру, чтобы он память чистил и мусор который все равно остается. запускается несколько таких "Работников", которые и выполняют пхп задачи, все подключаемые файлы находятся в памяти во время обработки запросов. для пхп то самое быстрое известное мне на данный момент решение, не учитывая hip hop(facebook взгляд на развитие пхп - пхп код, компилируемый в си код, имеет ограничения по функционалу), возможно чтото еще подзабыл) прямо щас настраиваю сервер nginx + fpm без пхп добился стабильности выполнеия запросов при конкурентности - 20 тыс паралельных соединений и 50 тыс запросов в сеунду, генерируемый трафик - 70 мегабайт в секунду. нагрузка на систему 15-25% если использовать подобный сервер под фронтенд, думаю легко выдержит 100-300к запросов в секунду, ну обрабатывать запросы будет естетсвенно не сам, только проксировать. 20% - база, 80% - гадание на манной гуще чтоли? что там такого происходит? в вебе 80% - база, остальное просто форматирование вывода.
лучше книжки почитайте, в пхп5 разница составляет пару процентов просто в пхп4 был парсер чуток ебанутый, вот отсюда и "магический" прирост скорости. да и я вам так скажу, если в ыиспользуете опкод кешеры, то на ваши точки ему пофиг, он 1 раз интерпретирует код и миллион раз использует бинарную модель, в которой разницы между точками уже точно нет как я и говорил - байтодроч и не больше, бросайте это дело
забыл отметить, что это максимум сколько я смог натравить на сервер имея 1 сервер но результаты меня радуют, этого достаточно для моей будущей работы с ним
Ну это не значит, что код надо писать грязным и не обращать внимания на элементарные вещи? ) Я до кешеров еще не доходил, но щас самое время. Посоветуйте, как профи, какой юзать? eAccelerator - все о нем тараторят. Спасибо.
php api => json rest => action script | flex api. соц сеть в виде внедряемого в сторонние приложения компонента во как заебну, чтобы заинтриговать как на хабре понты гнут из простых вещей Ж) из опыта испольования этот кешер неплох для небольших файлов, мало связанных, для всяких zf|bitrix рекомендуется xcache, я для себя выбрал eaccelerator, с монстрами я не работаю, поэтому xcache неактуален для меня. а кто говорил про грязность? код надо писать чистым, читаемым, самодокументируемым. кавычки или двойные кавычки очень посредственно относятся к этим понятиям, а вот с понятием байтодрочь неплохо коррелируют PHP: echo "my name is $name"; PHP: echo 'my name is ".$name; ага, чем то лучше PHP: echo "my name is $name\nand surname is $surname"; PHP: echo "my name is" . $name . "\n".'and surname is ".$surname; а вот это уже пиздецом попахивает, даже пованивает я бы сказал ну и к слову, не думаю что расходы на конкатенацию значительно ниже расходов на парсинг переменных в строке, ведь при конкатенации выделяется память и переменные копируются и создаются новые, это очень сомнительная оптимизация. самый красивый метод конечно echo sprintf("my name is %s'nand surname is %s", $name, $surname);
железо недорогое, 12гб оперативки и 8 ядерная система. но я думаю что вы сами можете понять что не всякий танк летает, а только с хорошим водителем
поясню: [js][ { id : 1, // в этом поле нужно все гавно в html-сущности перевести title : 'foo', // тут аналогично body : 'bar' // здесь safe-текст, т.е. ниче конвертить не нужно, оставляем как есть ][/js]