PHP는 훌륭한 도구이며 간단할 수도 있고 복잡할 수도 있습니다. 프로젝트마다 다른 PHP를 사용해야 합니다.
소규모 프로젝트 - 간단하고 직접적인 PHP.
일반적으로 기능 페이지가 20개 미만인 웹사이트의 경우 매우 간단한 프레임워크 구조를 사용하여 작성할 수 있습니다. 이 규모에서는 보다 직접적인 프로세스 지향 코딩 방법을 사용하는 것이 좋습니다. 이유는 매우 간단합니다. N개의 클래스 파일을 만들 필요가 없기 때문에 컨트롤러에 새로운 파일이 하나만 생성됩니다. 물론, 요구사항이 자주 변경되는 프로젝트는 제외됩니다.
이 수준에서 PHP의 장점은 분명합니다. 빠른 개발, 한눈에 명확합니다. 단점도 잘 숨겨져 있습니다.
중간 규모 프로젝트 - 아름답게 구조화된 OO PHP
중간 규모 프로젝트의 경우 잘 설계된 프레임워크를 사용하는 것이 좋습니다. 이 프레임워크는 MVC 모델을 기반으로 하며 많은 기본 작업을 캡슐화할 수 있습니다. 가장 좋은 점은 투명한 캐시 메커니즘이므로 변경 사항에 적응하기 위해 추가하는 OO 메커니즘이 더 빠르고 더 잘 실행될 수 있다는 것입니다.
이 수준에서. 불완전한 OO 지원(이 PHP5는 크게 개선되었습니다)과 단일 스레드 모드만 지원하는 등 PHP의 단점이 나타나기 시작했습니다. 또한 일부 주변 도구는 지원이 부족하기 시작했습니다. 예를 들어 PHP에는 좋은 리팩토링 도구가 없으며 IDE에 통합된 좋은 단위 테스트 도구가 없습니다. 물론 장점은 원래의 빠른 개발과 사용 가능한 광범위한 오픈 소스 리소스입니다.
대규모 프로젝트 - 확장되고 최적화된 PHP
여기서 대규모 프로젝트는 단순히 분산 프로젝트를 나타냅니다. 즉, 프로그램을 N 서버에 배포해야 합니다. 이 수준에서 PHP는 j2ee에 비해 많은 지원이 부족합니다. PHP를 대규모 시스템에 적용하려면 해결해야 할 몇 가지 문제에 대해 735에서 Shadow와 자세히 논의했습니다. 물론 이러한 문제는 PHP 언어의 문제일 뿐만 아니라 주변 개발의 문제도 포함합니다.
1 PHP 페이지 코드 공유, PHP 소스 코드가 메모리에 한 번 로드된 후에는 메모리에 유지됩니다. 이는 APC 및 Zend의 최적화 프로그램을 사용하여 수행할 수 있습니다.
2 PHP 페이지 간 데이터 개체 공유. 배열과 같은 데이터 개체는 이제 직렬화를 사용하여 수행할 수 있지만 이는 공유를 사용하여 수행할 수 있습니다. 이를 처리하려면 메모리 또는 memcached를 사용하세요.
3 PHP 데이터베이스 연결 풀, 다중 프런트 엔드의 경우 PHP가 데이터베이스에 대한 연결을 제어할 수 없기 때문에 데이터베이스 앞에 sqlrelay와 유사한 연결 풀을 생성해야 합니다. 게다가 데이터 캐싱도 매우 중요합니다. 고압적인 개발을 위한 팁이 있습니다. 즉, 가능하면 데이터베이스를 건드리지 마세요.
4 PHP 프런트엔드 캐시 시스템. 웹 사이트 페이지가 데이터베이스에 최소한의 쿼리를 수행하도록 보장하는 투명하고 제어 가능한 캐시 메커니즘입니다. 이에 대한 구현은 많이 있지만 특별히 좋은 구현은 찾지 못했습니다.
5. PHP 애플리케이션이 이러한 문제를 성공적으로 해결한 후에는 약간 더 큰 부담에도 문제 없이 대처할 수 있습니다.
이 수준에서는 PHP, Java, C++, Python 등을 통합하여 효율적인 시스템으로 만드는 것이 중요합니다. 분산 메모리 관리를 위해 memcached를, 전체 텍스트 검색을 위해 Lucene을, 일부 비즈니스 로직 구성 요소를 배치하기 위해 ejb 컨테이너를 사용할 수 있습니다. PHP는 프런트 엔드와 시스템 사이를 빠르고 유연하게 결합하는 역할을 합니다.