Приблизна схема архітектури останнього масштабного проекту, в якому я брав участь.
Це лише базовий контур, адаптований із фактичних архітектурних документів та представлений таким чином, що нагадує типовий підхід n-ярусів у поєднанні з типовим підходом MVC . Як ви бачите, логічні рівні та рівні даних з'єднуються через сервісний рівень, а точніше API REST , який був натхненний Recess , менш відомою рамкою PHP.
Не винаходити колесо
Я працюю з трьома рамками:
Zend Framework
Бегемот PHP-фреймів, з вражаючо добре написаною базою кодів та широким переліком функцій. У масштабних програмах ви найчастіше налаштовуєте рамки, і я вважаю, що база даних коду ZF є найприємнішою для роботи. Але будьте обережні, це не рамки початкового рівня .
Кохана
Кохана почався як вилка CodeIgniter, і це було достатньою причиною, щоб я не використовував її спочатку. Сьогодні вона переросла у міцну та елегантну основу, яка відрізняє себе один від одного, дотримуючись ієрархічного підходу MVC . HMVC дозволяє отримати більшу кількість модуляризації, ніж MVC . Для проекту на діаграмі я адаптував HMVC Kohana до ZF, але я почав використовувати Kohana для менших проектів і розглядав його як для більших.
CodeIgniter
Я використовую його лише через спадковий проект, який я успадкував, якщо це можливо, уникайте.
Як вказували інші відповіді, ОРМ завжди корисний. Я широко використовую Doctrine , і вам слід поглянути на його абсолютно нові картографи для CouchDB та MongoDB . Масштабованість є необхідною у великих програмах, і ви повинні оцінювати рішення NoSQL .
Все, що сказано, важливо пам’ятати, що більші програми, як правило, мають унікальні проблеми. Ви повинні оцінити кожне популярне рішення сторонніх розробників, і ви, мабуть, отримаєте багато від пари незрозумілих. Коли я вперше оцінив Recess, він був далеко не готовий до виробництва, але його підхід, по суті, ввійшов у проект.
Продуктивність
На звичайних сайтах ви можете піти з простим кешуванням виведення і кешуванням опкода , але на великих додатках , які ви дійсно повинні розглянути кешування пам'яті, який найчастіше будується навколо Memcached .
xdebug здебільшого відомий як налагоджувач, але також може служити профілером . Нещодавно я почав використовувати Zend Server, і я абсолютно обожнюю його функції відстеження коду . На жаль, вони не доступні у виданні Community , але xdebug є досить гідною альтернативою.
Якщо ви використовуєте Apache, не забудьте оптимізувати його . nginx і lighttpd - це, мабуть, кращий вибір , ефективність роботи, але я не використовував їх багато, і я не можу сказати.
Що стосується бази даних, то кешування запитів і результатів Doctrine творить чудеса, особливо в поєднанні з запам’ятовується . І звичайно, ми не можемо забути про передню частину. Команда Yahoo's Exception Performance зібрала широкий перелік найкращих практик . Я насправді не розробник передньої частини, але бачив дивовижні результати на сольних проектах.
Нарешті, PHP має абсолютно новий механізм збору сміття , який варто вивчити.
Безпека
Світ безпеки PHP, хоча б сказати, хаотичний. Я не експерт, тому ставтесь до таких як до загальних порад:
Відкрийте проект безпеки веб-додатків
Тут є багато хороших речей, але для швидкого огляду слід почати з першої десятки списку . І досліджуйте PHP-рішення для цих загальних уразливостей.
Стек уразливості
Хороша звичка - періодично контролювати відкриті помилки PHP . Навіть якщо ви самі не є експертом, майже завжди є поради щодо погроз безпеці. І звичайно, ви повинні поширити звичку на всі інші частини стека, особливо на найвразливіші, наприклад веб-сервер та базу даних.
Натовп на IT Security Stack Exchange може допомогти вам з більш освіченими відповідями.
Подальше читання