PHP와 성능


17

필자는 항상 PHP가 중소형 웹 사이트 용이고 .NET 및 Java는 엔터프라이즈 응용 프로그램 용이라고 들었습니다. 내 질문은 PHP에 관한 것입니다. 엔터프라이즈 웹 애플리케이션에 PHP가 적합하지 않은 이유는 무엇입니까? 웹 응용 프로그램이 커지면 해석되는 언어이므로 PHP가 느려지기 때문입니까?

회사 세계는 자사 제품과의 통합 및 백엔드 서비스 등으로 인해 .NET 또는 J2EE를 선택할 것임을 알고 있습니다. 그러나 사이트와 웹 응용 프로그램을 구축하기위한 PHP 만 있다면이를 어떻게 사용하여 성능을 향상시킬 수 있습니까? 큰 사이트?

간단히 말해서, PHP 성능과 웹 사이트 크기 사이에는 어떤 관계가 있습니까? PHP가 큰 사이트에 적합하지 않은 요소는 무엇입니까?


1
미디어 위키 (wikipedia 's engine)는 PHP로 작성되었으며 성능이 좋았지 만 아무 것도 증명하지 못했습니다. 틈새 사건 일 수 있습니다.
Michael K

2
@MichaeltheGhost는 Alexa 상위 50 위의 사이트를 사용하고 있으며 (아마도 조금 더) 볼륨이 극단적 인 수준이므로 솔루션이 해당 수준의 트래픽에 맞게 고도로 사용자 정의되고 미세 조정되고 실제로 동일하지 않기 때문에 나쁜 예입니다. 더 이상 기술.
Ryathal

1
페이스 북도 PHP를 사용하고 있습니다. 또한 이것은 성능이 아닌 확장성에 관한 것을 의미하지만 차이점을 알고 있습니다. 또 다른 예는 확장 성으로 인해 Java에서 PHP로 웹 사이트를 다시 작성한 프리 모빌입니다.
deadalnix

"현재 Wikimedia Foundation의 Mediawiki에있는 대부분의 PHP 코드는 HHVM JIT 컴파일러를 사용하지만 일부 서비스는 Zend Engine PHP를 계속 사용합니다." en.wikipedia.org/wiki/Wikipedia:FAQ/Technical Facebook이 PHP 속도를 높이기 위해 만든 것입니다 (C ++ 번역기에서 PHP로 컴파일). 그것은 PHP로 작성 되었기 때문에 말할 수는 없습니다. 속도는 항상 같습니다. 그것은 그런 의미에서 코드로 무엇을하는지에 달려 있습니다.
pqsk

답변:


19

성능은 아마도 요소 중 하나가 아닙니다. 다이나믹 한 언어의 경우, PHP는 실제로 꽤 잘 작동합니다. 작업에 따라 다른 기술을 능가 할 수도 있고 그렇지 않을 수도 있습니다. 응용 프로그램 모델은 Java 또는 ASP.NET과 직접 비교하기에는 너무 다릅니다. 측정 가능한 속도 차이가 있어도 크지 않으며 선형 일 수 있으므로 더 많은 하드웨어를 던져서 해결할 수 있습니다. 또한 프로그래밍 언어 자체는 병목 현상이 거의 없습니다. 알고리즘, 데이터베이스 액세스, 네트워크 대역폭 및 I / O는 일반적으로 CPU를 많이 사용하지 않는 한 일반적인 범인입니다.

PHP를 통해 ASP.NET 또는 Java를 사용하는 이유는 다음과 같습니다.

  • 플랫폼 통합. ASP.NET은 .NET 및 기본 Windows OS와의 광범위한 통합을 제공합니다.
  • 일반적인 목적. PHP는 웹 전용으로 설계된 반면 .NET과 Java는 범용 플랫폼입니다. Java 또는 .NET을 사용하면 약간의 노력으로 데스크탑과 웹 프론트 엔드를 동일한 공유 코드에 고정시킬 수 있지만 PHP는 데스크탑 애플리케이션 작성에 적합하지 않습니다.
  • 코드 구성 기능. Java 및 .NET은 처음부터 OOP를 위해 설계되었으며 PHP의 OOP는 다소 나중에 고려됩니다. PHP는 최근에 네임 스페이스를 도입했으며 .NET 및 Java가 제공하는 것과 비교하여 제한적이고 서투르다. 엔터프라이즈 스타일 프로그래밍은 일반적으로 OOP에 크게 의존하므로 PHP를 덜 후보로 만듭니다.

인식되는 효과의 또 다른 이유는 PHP가 무료이며 (맥주 에서처럼) 유비쿼터스이기 때문입니다. 모든 저렴한 공유 웹 호스팅 회사는 표준 패키지에 PHP를 가지고 있지만 .NET 또는 Java 서버는 훨씬 더 많은 비용이 듭니다. 결과적으로, 대규모의 작은 웹 사이트가 PHP를 사용합니다. PHP는 작업에 가장 적합한 도구가 아니라 유일한 도구이기 때문입니다.

PHP가 대규모 프로젝트에 적합하지 않다는 것은 아닙니다. '엔터 프시'종류의 프로그래밍에는 적합하지 않습니다. 그 강점은 다른 곳에 있으며,이를 활용할 수 있다면 다른 웹 기술과 마찬가지로 대규모 응용 프로그램을 쉽게 구축 할 수 있습니다.


2
하나의 작은 퀴즈, LAMP 공유 호스팅과 동일한 가격으로 ASP.NET 공유 호스팅을 얻을 수 있습니다. 문제는 대부분의 사람들이 검색 할 때 가장 많이 찾는 장소는 중소 기업에 판매되는 사이트이며 더 비쌉니다.
jfrankcarr

+1, 이것은 매우 잘 말되고 요약됩니다. 대부분의 성능이 떨어지는 응용 프로그램의 병목 현상은 거의 언어가 아닙니다.
GrandmasterB

1
사실 Java는 솔루션이라고 생각하지 않습니다. Oracle과 같은 회사의 많은 'Enterprise'앱을 사용하는 것은 불행했습니다. 거의 모든 기능은 기능이 거의 떨어지지 만 성능과 유용성이 크게 향상 된 PHP OSS 앱으로 대체 될 수 있습니다.
gbjbaanb

3
@gbjbaanb : Java는 문제가 없기 때문에이 문맥에서 해결책이 아닙니다. 그리고 무언가가 오픈 소스인지 아닌지는 주제와 전혀 관련이 없습니다.
tdammers

@GrandmasterB 예, 아니오. 예를 들어 Java는 내부적으로 동기화 된 많은 프리미티브를 가지고 있으며 PHP는 그렇지 않습니다. 확장 가능한 Java 코드를 작성하려면 더 많은 훈련이 필요합니다. 프리 모바일은 그 효과의 실제 예입니다. 그러나 확장 성은 프론트 엔드에만 의존하는 것이 아니기 때문에 (예를 들어 데이터베이스는 매우 중요합니다) 어쨌든 생각해야합니다.
deadalnix

13

비즈니스 로직 복잡성 정도 (단순 웹 사이트 대 엔터프라이즈 솔루션)와 혼동되는 트래픽 ( "중소 웹 사이트"는 일반적으로 중소 규모의 웹 사이트를 의미)을 혼동합니다. 두 번째 경우에는 성능이 핵심 요소가 아닙니다.

예를 들어 Facebook은 트래픽이 많은 웹 사이트이지만 엔터프라이즈 앱이 아닙니다. 반면에 Java 응용 프로그램 서버를 기반으로하는 인트라넷은 많기 때문에 중간 규모 웹 사이트의 트래픽도 처리 할 수 ​​없습니다.

성능 측면의 PHP는 최선의 선택은 아니지만 그렇게 나쁘지는 않습니다. 특히 다른 동적 언어와 비교합니다. 그러나 다시 원시 성능이 가장 중요한 요소는 아닙니다. 트래픽이 많은 웹 사이트를 만드는 것은 아키텍처 수준에서 확장 성을 최적화하는 것입니다.


왜 엔터프라이즈에서 PHP를 멸시합니까? 몇 가지 원인이 있습니다. 먼저 보안 평판끔찍할 것 입니다. 둘째, 관리하기 어려운 HTML-PHP 스파게티 코드를 생성하는 아마추어를위한 언어로 인식되었다는 것입니다. 성숙한 MVC 프레임 워크가 있지만 그 인식은 지속됩니다. 내가 가진 같아요 PHP의 원래 저자는이 프레임 워크가 필요하지 않다는 주장 도움이되지 않습니다. 프로그래밍 기술이 거의 없거나 전혀없는이 단서가없는 아마추어도 스스로를 "PHP 프로그래머"라고 부릅니다. 세 번째 이유는 모든 숙련 된 프로그래머가 PHP가 언어로 잘못 설계되었다는 데 동의한다는 것입니다. 웹 마스터가 디자인했음을 분명히 알 수 있습니다.

그리고 그렇습니다. 엔터프라이즈에서는 PHP가 빛을 발하지 않는 시스템 통합에 관한 것입니다. 충분한 노력으로 C 모듈을 만들 수 있습니다. PHP-Java 브리지가 있는데 사용하기가 매우 지루합니다. 그 이상은 많지 않습니다. Boost :: PHP (C ++와의 통합)를 만들지 못했습니다. JVM에서 실행되는 PHP 클론은 PHP와 100 % 호환되지 않습니다 (부수적으로, 공식적인 PHP 언어 정의는 없으며 유일한 참조는 기본 구현입니다).


6

사람들이 왜 PHP가 중소 웹 사이트를위한 것이라고 주장하는지 모르겠습니다. 내가 아는 한 이것은 사실이 아닙니다. 소규모로 시작한 PHP 지원 웹 사이트가 우리나라에서 상위 100 개 웹 사이트로 성장했습니다. 그들은 여전히 ​​PHP를 사용하고 그것에 대해 아무것도 바꿀 계획이 없습니다.

사람들이 그러한 결론을 이끌어 낼 수있는 것은 Java의 경우 응용 프로그램 호출이 문서 및 문학에서 자주 제기되는 용어라는 것입니다. 대부분의 응용 프로그램 서버는 인기 증가와 함께 "마력"을 빠르게 추가 할 수있는 특정 형태의 클러스터링을 지원합니다. PHP의 경우 클러스터를 직접 구축해야합니다. 다른 구성 요소를 사용하여 여러 가지 방법으로 수행 할 수 있으며 PHP 내부 작업에 대해 약간 또는 두 가지를 알아야합니다. 이것은 아마도 사람들에게 PHP 단일 서버 (및 중소 웹 사이트)가 PHP의 막 다른 골목이라고 생각하게합니다.


3

엔터프라이즈 웹 애플리케이션 만이 아닙니다. 엔터프라이즈 세계에는 일반적으로 전체 엔터프라이즈 시스템이 있으며 전체 시스템에 비해 웹 부분이 매우 작습니다. 웹 아래에는 일괄 처리, 대기열 메시징, 엔터프라이즈 통합, 게이트웨이 등을 수행하는 많은 시스템이 있습니다. 상단의 이벤트 만있을 수 있습니다

PHP는 웹에 좋지만 다른 유형의 분산 시스템에는 적합하지 않습니다. Java 또는 .NET에서 이러한 모든 시스템을 수행하므로 PHP가 아닌 동일한 플랫폼에서 웹 스택을 쉽게 구축 할 수 있습니다.


1

PHP의 문제는 보안 취약점의 역사보다는 성능에서 비롯된 것이 아닙니다. 의심 할 여지없이 PHP로 특정 크기 나 복잡성을 가진 웹 사이트를 작성하고 보안을 유지하는 것이 가능 하지만 복잡성이 증가함에 따라 보안 유지가 더욱 어려워지는 경향이 있습니다.

반면에 Java는 최소한 보안에 관한 아이디어를 처음부터 설계했습니다. 이것들은 대부분의 현재 배포 (원래 생각은 주로 서블릿이 아닌 애플릿에 관한 것)에 완전히 맞지 않지만 강조는 기능이 보안 코드 생성에 더 잘 맞는 경향이 있음을 의미합니다. 물론 애플릿은 현재 거의 문제가되지 않았기 때문에 Java는 현재 (대부분) 차지하는 서버 측 역할을 강조하기 위해 재정의되었습니다.

.NET은 최소한 Java와 거의 직접 경쟁하려고 시도하기 때문에 이와 관련하여 거의 동일한 종류의 기능을 제공합니다. 당신이 주장 할 수 있습니다 (두 캠프 지지자가 할) 일 또는 Microsoft는이 점에서 더 나은 일을 이상 여부를하지만, 두 사람의 팀이 정말 가지고 있다는 단순한 사실 노력하고 거기에 작업에이에 PHP를 통해 그들에게 매우 심각한 이점을 제공 존경.


0

1) 성능 : 여기에 몇 가지 답변이 오해되고 있습니다.
Phalanger 프로젝트 (과거에 성공적으로 사용했습니다)를 사용하면 PHP에서 C # 코드를 사용하거나 그 반대로 할 수 있습니다. 아마도 약간의 변경을해야 할 것입니다. 그러나 그들이 계속 노력할수록 점점 더 좋아집니다.
내 요점은 C # (또는 .NET에서는 일반적으로 VB가 동일하게 작동하며 결국 MSIL입니다)에 찬성하여 평균 2.5 속도의 요소가 있음을 알았습니다.
Wordpress로 테스트를 확인하면 많은 개발자가 관심을 끌었습니다.

이제 우리는 아직 그를 보지 못했지만 FaceBook이 PHP로 작성되었다는 것을 항상 알려주는 사람이 있습니다. 잘못된. 원래 실수를 깨닫고 C ++로 변환하기 위해 HipHop을 작성했습니다.

편집 : 마지막 블록이 확실하지 않으므로 분명히 의미하는 것은 FaceBook IS 가 PHP로 작성되었지만 HipHop은 PHP가 느리기 때문에 전체 속도를 향상시키기 위해 C ++로 실행 되도록 합니다.

2) 보안 : 이미 언급 한 바와 같이, PHP는 오랜 보안 문제를 가지고 있습니다.

3) 개발자 시간 : PHP로 웹 사이트를 만드는 것은 특히 프레임 워크와 사용 가능한 모든 "사이트 빌더"에서 더 쉬운 경향이 있습니다. 안전하고 좋은 PHP 웹 사이트를 만드는 것은 또 다른 이야기입니다.


Facebook / HipHop은 크게 변하지 않습니다. 그들은 여전히 ​​PHP 문장을 작성합니까? PHP to Java 컴파일러도 있습니다. 모든 PHP 코드를 컴파일하면 내 사이트가 실제로 Java로 작성되었음을 의미합니까?
Jacek Prucia

그것은 Java라는 것을 의미하지 않으며, 그렇게 실행한다는 것을 의미합니다.
Louis Kottmann

그래, 맞아, 그래도 내 사이트가 PHP로 작성되었다고 주장 할 수 있습니까? 그렇다면 누구든지 페이스 북이 PHP로 작성되었다고 주장 할 수 있습니다. 다시 말해, "프로그래밍 언어"라는 용어를 이해하는 방식으로 요약됩니다. 유효한 명령문의 조합 일 뿐입니 까 아니면 런타임 환경이기도합니다. 나는 첫 번째 의미를 선호하기 때문에 HipHop이 많이 바뀌지 않는 이유입니다. 그래서 나는 당신이 언급 한 FaceBook 친구입니다 :)
Jacek Prucia

알겠습니다. 더 명확하게하겠습니다. 그러나 기록을 위해, 나는 대부분의 독자들이 내 요점을 이해했다고 확신합니다.
Louis Kottmann

원래 PHP로 Facebook을 작성하는 것은 실수가 아닙니다. 그들이 본 확장 성을 따라 잡을 수 없다는 것을 알게되자 HipHop을 사용하여 문제를 해결했습니다. 이것이 PHP를 사용하는 것이 모든 웹 사이트에 매우 좋은 옵션이라는 것을 의미합니다. 즉, Slashdot은 스트레이트 펄을 사용하고 스케일 문제를 해결했으며 wikipedia는 일반 PHP를 사용하며 스케일 문제도 없습니다.
gbjbaanb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.