Pull to refresh

Страшные сказки про PHP5, рассказанные на ночь…

Reading time 3 min
Views 2.6K
1) Какой бы ерундой вы не занимались с PHP, узкое место _всегда_ — БД. PHP — он как Буратино — тупОЙКАк… дрова. Lighttpd и Nginx позволяют разнести его по множеству физических серверов на раз без шума и пыли. Зарплата адекватного спеца по PHP в Москве — 30-45 тыс. рублей в месяц, стоимость аренды нормального сервера — от 3 тыс. рублей в месяц. А вы не знали ;)?

2) Какой бы ерундой вы не занимались — 30-60% производительности (возможно и больше) PHP-кода решит правильно выбранный и настроенный акселератор.

3) Серебряной пули нет. Не важно, какой концепт вы применяете — строгое ООП (в стиле Zend Framework), функции в стиле PHP4 (или ограниченное ООП) или вообще лапшу в стиле «PHP для чайников» — ни одна из этих парадигм не даст ощутимый прирост производительности, если конечно ваши программисты не выше как минимум на голову.


4) Самый быстрый код — это код, которого нет. И уж точно — когда нет запросов к БД (см. п.1). Так что кеширование — это безусловно то, с чего начинается высокая производительность. Смело забивайте на _любую_ оптимизацию, пока есть возможность что-то закешировать. Закешировать можно все. Вопрос лишь в том, как посылать уведомления о необходимости обновить определенные части кеша. (Возможно кто-то помнит баги сайта free-lance.ru, когда в разных местах одни и те же цифры были разными, из-за чего было много недоразумений. Это позор.) И как правило, чем выше уровень абстракции, тем меньше производительность кода, и тем больше возможность кеширования при тех же затратах человеко-часов. И в итоге на более высокой абстракции можно выжать большую конечную производительность за счет кеширования. Но это уже кто как умеет:) (см. п. 3).

5) Если вы считаете, что echo быстрее print — вы неудачник. В современных MVC-проектах как правило подобные фичи вызываются как максимум три раза: во front-контроллере, в AJAX-контроллере и в RSS-контроллере — то есть максимум три оператора вывода в стандартный поток на весь ваш большущий проект.

6) Если вы молитесь на Front-контроллер Zend Framework — это ваше право. Но его концепт "/key/value/" считают революционным люди, не видевшие ничего кроме ?key=value&foo=bar, но кто-то заюзал концепт /virtdir1/virtdir2/virtfile/, используя грязные хаки ERROR 404, задолого до повсеместного появления на виртхостингах (и очень задолго до появления VDS) mod_rewrite (и PHP5;). Конечно, фронт-конроллер ZF очень гибкий, но не легче ли написать свой? Все вышенаписанное справедливо только для больших проектов, если вы пишете много маленьких — это не для вас (заюзайте стандартный Front Controller ZF и сосредоточтесь на легкости поддержки).

7)
echo «preved $foo $bar»;
echo 'preved '. $foo. ' '. $bar;
echo 'preved ', $foo, ' ', $bar;
sprintf('preved %1$s %2$s', $foo, $bar);
Вы, как матерый профессионал хайлоада можете с закрытыми глазами сказать, какая конструкция быстрее? Расслабьте анус, батенька — вы неудачник.
Вы можете точно и аргументированно сказать, какую концепцию выбрать в качестве стандартной в рамках большого проекта — респект.

8) Забудьте и навсегда пошлите в глубокий анус виртуальные хостинги, как ваш самый страшный сон. Идите и купите себе виртуальный выделенный сервер с правами root за >=150 рублей в месяц. И поставьте туда ваш любимый Debian/Gentoo/FreeBSD, и управляйте им как Root Всемогущий! Отныне вы свободны! :)

9) Если на вашей рабочей машине PHP работает под Windows — вы нюхаете цветы в противогазе. Если вы хотите стать профессиональным серверным программистом под *nix — смело сносите Windows и ставьте *nix (Linux, FreeBSD, OpenSolaris, etc...) Если такой цели нет — можете запускать *nix-сервер в виртуальной машине (Virtual Box, VMvare, etc...), но пожалуйста, не мучайте PHP — не гоняйте его под Windows…

10) Если на вашей рабочей машине PHP работает без акселератора — вы нюхаете цветы в противогазе, надетом на респератор, а поверх этих гламурных шмоточек на вас еще надет… ТАНК! Установите уже акселератор, черт возьми! (upd: имеется в виду development-машина)

11) Если вы считаете, что постигли PHP5 в совершенстве — вы неудачник. Всегда есть, чему научиться. Если вы точно знаете, у кого вам есть чему поучиться — можете дальше не читать.

12) PHP5 (PHP4 забудьте, как страшный сон!) — очень коварная штука. Людей там слишком много. Большинство программистов находятся на уровне «ниже плинтуса». Причем некоторые из них умудряются писать умные книги (кстати, я до сих пор не видел ни одной нормальной книги по PHP5), и учить людей «тонкостям программирования на PHP» множеством других способов. Научитесь отделять зерна от плевел — то есть чайников от профессионалов, этот навык будет для вас одним из важнейших. Учитесь у профессионалов. Может быть, вы не представляете, сколько можно потерять времени, пытаясь учиться чему-то у чайников (и мне кстати тоже не верьте;)

13) И не верьте никому, кто заявляет, что PHP5 — «плохая» технология, пока не врубитесь в нее хотя бы на 90% и точно не будете знать, чего вам в ней не хватает ;)

upd: Естественно, все вышеизложенное относится к тем проектам, где есть хоть какая-то сложность и нагрузка.
Tags:
Hubs:
+126
Comments 287
Comments Comments 287

Articles