웹사이트의 75% 이상이 PHP를 개발 언어로 사용합니다. wordpress, phpmyadmin 및 기타 오픈 소스 프로젝트의 인기로 인해 수많은 롱테일 사용자가 생겼습니다. 그러나 일반적으로 설치되지만 업데이트되는 경우는 거의 없습니다. 아래 그림은 현재 PHP 사용 통계를 보여줍니다.
놀랍게도 이 이미지의 왼쪽 절반은 더 이상 지원되지 않는 PHP 버전을 나타냅니다. PHP 5.2는 2011년 1월부터 더 이상 유지되지 않습니다. 그렇다고 해서 사용할 수 없다는 의미는 아니지만 특정 보안 업데이트를 따라잡을 수 없다는 의미입니다. 일부 배포판에서는 일부 버그를 수정하려고 시도하지만 2006년의 오래된 기술을 사용하고 있기 때문에 PHP 버전이 약간 부족한 것 같습니다.
시작할 곳
더 이상 아무도 PHP 5.2 버전을 선택하지 않지만 이런 일은 이미 일어났습니다. 하지만 제가 이 블로그를 쓰는 것은 업그레이드 가이드를 제공하기는커녕 불평을 하려는 것이 아닙니다. 일반적으로 그들은 2006년에 시작된 일부 호스팅 공간을 사용하고 있습니다. 최신 버전 사용을 피하기 위한 "장기 지원" 버전이 있거나 아직 업그레이드할 계획이 없습니다. 아니면 정말 많은 이유가 있을 수도 있습니다. 그러나 최신 버전의 PHP에서는 좋은 기능이 여러분을 기다립니다.
PHP 5.3에는 유용한 OOP 기능이 많이 추가되었습니다! 예를 들어 익명 함수, SPL 확장은 단순한 반복자 그 이상이며 멋진 DateTime 확장은 이미 PHP 5.3에 통합되어 있습니다. 또한 매우 중요한 E_DEPRECATED 오류 보고 플래그를 추가했습니다. 현재 사용 중인 기능은 다음 버전에서는 사용할 수 없음을 알려줍니다. 이미 PHP 5.3을 사용하고 있다면 향후 업그레이드 경로가 더 원활해질 것입니다. 이전 버전에서 실행 중인 온라인 프로그램이 있는 경우 업그레이드를 권장하지 않습니다.
PHP 5.4는 일련의 최적화를 수행하여 실행 효율성을 높이고 메모리 사용량을 줄였습니다. 아래는 벤치마크 테스트 결과입니다.
어떤 특성을 사용하든 PHP 5.4는 프로그램 성능을 향상시키고 하드웨어 비용을 절감합니다. 따라서 오픈소스 소프트웨어를 사용하는 경우 계속 업그레이드하는 것이 좋습니다.
PHP 5.5는 아직 테스트 중이므로 프로덕션 환경에 적합하지 않습니다. PHP 5.3부터는 업그레이드 및 변경 위험이 크게 줄어듭니다.
다음은 마이지가 정리한 글입니다
PHP 버전을 선택할 때 다들 헷갈리실 텐데요. 어떤 버전을 선택해야 할까요?
질문:
이제 Windows Server 2008 r2를 사용하여 새 서버를 구입했습니다. PHP 5.4 환경을 구성합니다.
그런데 개발하기 전에는 2003과 PHP 버전 5.2를 사용했는데, 새 서버에 이식하면 프로그램 실행에 영향이 있을까요? 아니면 주의해야 할 다른 문제가 있나요?
API 버전
PHP는 주요 버전에 대해 이전 버전과 호환되는 업그레이드 방법을 채택합니다. 이는 5.5가 5.1-5.4와 호환된다는 것을 의미합니다. 하지만 호환성은 실제로 낙관적이지 않으며 PHP 관계자로부터 좋은 솔루션을 기대해서는 안됩니다. 2013년 9월 현재 버전은 5.2.17 5.3.27 5.4.17 5.5.3
5.2.17
이 버전은 가장 널리 지원되는 버전이라고 할 수 있습니다. Drupal7.23, Joomla2.5와 같은 대부분의 오픈 소스 소프트웨어와 dedecms5.7, discuzX3 등 대부분의 국내 소프트웨어가 이 버전을 사용합니다. 버전은 여전히 5.2를 지원합니다. 특별한 요구 사항이 없는 경우 이 버전을 설치하는 것이 가장 문제가 없고 노동력을 절약해 주지만 장기적으로는 결국 포기될 수 있습니다. 요즘 많은 호스팅 회사에서는 인건비 절감을 위해 PHP 버전 업그레이드를 게을리하고, 기본적으로 지원하고 있습니다. (여기에 한마디를 입력하세요. 더 많은 설치 환경과 호환되도록 국산 소프트웨어는 이제 아주 선의로 되어 있습니다. PHP5.1도 지원합니다. (discusX3는 지원하지 않습니다.) 가장 희소한 것은 성능이 좋지 않다는 것입니다. 훨씬 뒤떨어져 있고 이것을 할 수 있습니다. 정말 쉽지 않습니다!) Drupal6은 이 버전을 사용하는 것이 좋습니다.
5.3.28(권장)
이 버전의 이름은 5로 시작하지만 PHP 6.0 버전의 시작이라고 생각하는 사람들이 많습니다. 성능이 향상되었고 많은 API가 변경되었기 때문에 5.2와의 호환성은 그다지 좋지 않습니다. 오픈 소스 소프트웨어는 5.2-5.3과 호환된다고 주장하지만 많은 문제가 있는 것 같습니다. 예를 들어 Joomla3은 5.3 이상만 지원합니다. Drupal7의 경우 이 버전을 사용하는 것이 좋습니다. 지원이 상당히 좋습니다. 이 버전은 Drupal8에도 사용할 수 있으며 지원이 상당히 좋습니다. 이 버전은 널리 사용되며 성능과 호환성 사이의 적절한 균형을 유지합니다.
5.4(부드럽게 권장)
5.4는 기본적으로 완성에 가깝습니다. 현재는 안정성과 성능이 뛰어나며 Drupal7.X는 향후 업그레이드를 위한 핵심 버전을 지원하지만 타사 모듈은 아직 완벽하지 않습니다. 나중에 업그레이드하기가 너무 게으른 경우 한 단계로 이 버전을 설치할 수 있습니다.
5.5
5.3부터 향후 버전은 기본적으로 성능 향상에 중점을 두고 기능 및 기타 기능은 하위 호환될 예정입니다. 5.5부터 좀 더 강력한 성능을 갖춘 64비트 버전이 나오는 것 같은데, 아직 시도해본 적도 없고 감히 언급할 수도 없습니다.
요약
오픈 소스 소프트웨어에서 PHP5.3 설치를 권장한다면 5.5나 다른 버전 대신 5.3을 사용하면 됩니다. 어쨌든 호환되고 성능이 더 좋을 수도 있다고 생각할 수도 있습니다. 새 것을 사용해? 그렇게 말하지만, 오픈소스 소프트웨어는 개발할 때 대개 특정 환경에서 개발된다는 사실을 알고 계실 겁니다. 아무리 호환성이 좋아도 예상치 못한 놀라움이 있을 것입니다(팀이 아무리 강력해도 불가능합니다). 모든 기능 API에 대해 호환성 테스트를 수행하면 작업 부하가 상당히 끔찍합니다!) 특정 환경에서만 테스트 및 최적화되며 호환성 문제가 있음을 알고 있어도 팀에서는 더 높은 버전과 호환되도록 수정하지 않습니다. 딱딱한 것은 아니지만 안전성과 안정성을 고려한 제품입니다. 오픈소스 분위기에서는 '최신 것이 최고'가 아니라 '충분히 최고'라는 인식을 가져야 합니다. 예를 들어 Joomla 3.1은 5.4-5.5에서 제대로 실행되지 않으며 설치조차 성공할 수 없습니다. 하지만 Drupal은 (이 시스템에서는) 5.5.3에서 정상적으로 실행됩니다. 그런데 작동 중에 예상치 못한 오류가 발생한 것 같습니다. 버전 문제인지는 모르겠습니다.
스레드 안전성이 없거나 스레드로부터 안전하지 않음
Apache는 일반적으로 스레드로부터 안전하지 않은 것을 선택하고 IIS는 후자(FAST-CGI)를 선택합니다. Xin 형제님이 옳다는 것은 설명하지 않겠습니다.
TS는 Thread Safety를 의미하며, 이 버전은 일반적으로 IIS가 ISAPI 모드로 로드될 때 선택됩니다.
NTS는 None-Thread Safe를 의미합니다. 일반적으로 이 버전은 빠른 CGI 모드에서 실행될 때 선택되며 성능이 더 좋습니다.
2000년 10월 20일에 출시된 PHP 3.0.17의 첫 번째 Windows 버전부터 모든 버전이 스레드로부터 안전합니다. 이는 Windows 시스템이 Linux/Unix 시스템과 다른 다중 프로세스 작업 방식을 사용하기 때문입니다. 멀티 스레드 작업 방식을 채택합니다. IIS에서 CGI 모드로 PHP를 실행하면 속도가 매우 느려집니다. 이는 CGI 모드가 다중 스레드가 아닌 다중 프로세스를 기반으로 하기 때문입니다. 일반적으로 ISAPI 모드에서 실행되도록 PHP를 구성합니다. ISAPI는 훨씬 빠른 다중 스레드 모드입니다. 그러나 일반적으로 사용되는 많은 PHP 확장은 Linux/Unix의 다중 프로세스 사고를 기반으로 개발되었습니다. 이러한 확장이 ISAPI 모드에서 실행되면 잘못되어 IIS가 다운됩니다. 따라서 CGI 모드는 IIS에서 PHP를 실행하는 가장 안전한 방법이지만 CGI 모드는 각 HTTP 요청에 대해 전체 PHP 환경을 다시 로드하고 언로드해야 하며 그 소비가 엄청납니다.
IIS에서 PHP의 효율성과 보안을 고려하기 위해 Microsoft는 FastCGI 솔루션을 제공했습니다. FastCGI를 사용하면 새로운 요청이 있을 때마다 프로세스를 다시 여는 대신 PHP 프로세스를 재사용할 수 있습니다. 동시에 FastCGI에서는 여러 프로세스를 동시에 실행할 수도 있습니다. 이는 CGI 프로세스 모드의 과도한 사용 문제를 해결할 뿐만 아니라 CGI 프로세스 모드에 스레드 안전 문제가 없다는 사실도 활용합니다.
따라서 ISAPI를 사용하여 PHP를 실행하는 경우 Thread Safe(스레드 안전) 버전을 사용해야 하며 FastCGI 모드를 사용하여 PHP를 실행하는 경우 스레드 안전 검사를 사용할 필요가 없습니다. None Thread Safe( 스레드 안전이 아닌 NTS) 버전은 효율성을 더 향상시킬 수 있습니다.
64비트 및 32비트
시스템이 64비트라면 64비트를 선택하세요. 시스템이 32비트라면 32비트를 선택하세요. Xin님.
미래
솔직히 미래는 PHP5.4 이상을 사용하는 사람들의 것입니다. 최신 정보를 유지하고 정기적으로 언어의 새로운 기능과 진행 상황을 추적하는 것은 우리 일상의 일부입니다. 이미 뒤쳐져 있다면 업그레이드 계획을 시작하고 최신 버전으로 업그레이드하는 것이 좋습니다. 노력은 그만한 가치가 있습니다. 결국 프로그램은 수년 동안 운영됩니다.