Windows 용 PHP 스레드 안전 및 비 스레드 안전


89

Windows 용 PHP를 다운로드하고 있습니다. 웹 사이트에 2 가지 옵션이 있습니다.

  1. PHP 스레드 안전
  2. PHP Non-Thread Safe

다음 질문에 답하십시오.

  1. 둘의 차이점은 무엇입니까? 서로의 장단점은 무엇입니까?
  2. 트래픽이 많은 전자 상거래 웹 사이트를 개발 중입니다. 어떤 웹 사이트가 더 권장되며 그 이유는 무엇입니까?


1
"교통량이 많음"이란 무엇을 이해하고 있으며이를 얻을 수 있다는 것을 어떻게 확신 할 수 있습니까?
Crack

@ Crack- 과중한 트래픽은 주어진 시간에 많은 사용자가 웹 사이트를 사용한다는 것을 의미합니다. 왜 확신 할 수 없습니까?! 뭔가 잘못 되었나요?
sumit

"과중한 트래픽"만 여러 가지 방법으로 정의 할 수 있으며, 일부 사람들에게 트래픽이 많은 것은 보통 또는 적은 트래픽 일 수 있습니다. 여기서 유용한 메트릭은 페이지 히트 / 일 / 시간 / 분, 모든 종류의 객관적인 측정입니다.
Crack

답변:


93

PHP 문서에서 :

스레드 안전성은 바이너리가 Windows의 Apache 2와 같은 다중 스레드 웹 서버 컨텍스트에서 작동 할 수 있음을 의미합니다. 스레드 안전은 각 스레드에 로컬 저장소 복사본을 만들어 데이터가 다른 스레드와 충돌하지 않도록합니다.

그래서 나는 무엇을 선택합니까? PHP를 CGI 바이너리로 실행하도록 선택하면 바이너리가 각 요청에서 호출되기 때문에 스레드 안전성이 필요하지 않습니다. IIS5 및 IIS6과 같은 다중 스레드 웹 서버의 경우 스레드 버전의 PHP를 사용해야합니다.

따라서 PHP를 사용하려는 방식에 따라 다릅니다.

  • Apache + LoadModule: 스레드 안전
  • Apache + FastCGI : 비 스레드 안전
  • IIS : 스레드 안전
  • IIS + FastCGI : 비스 레드 안전

PHP 매뉴얼에는 멋진 설치 지침이 있습니다.

FastCGI를 사용하여 PHP를 실행하는 AFAIR가 선호되는 방법이며, 더 빠르게 수행되고보다 세밀한 보안 구성이 가능합니다.


11
페이지에서는 "IIS에서 PHP를 사용하는 경우 PHP의 NTS (Non-Thread Safe) 버전을 사용해야합니다."라고 설명합니다. "IIS : 스레드 안전"이라는 답변과 비교
umutm

9
예, FastCGI를 언급합니다. 스레드 세이프는 ISAPI (php5isapi.dll)를 사용할 때입니다.
Crack

3
스레드로부터 안전하지 않은 옵션을 사용하는 이유는 무엇입니까? 그것은 다음과 같습니다 : 안전한 차와 안전하지 않은 차 사이에서 선택할 수 있다면 왜 제가 안전하지 않은 차를 선택하겠습니까? 더 나은 성능을 보입니까?
사이먼 이스트

4
@SimonEast NTS 버전에는 이미 웹 서버에 의해 수행되는 오버 헤드 관리 스레드가 있으므로 성능이 저하됩니다
ReZa

3
@SimonEast 정확합니다. 자사의 웹 서버에서 PHP에 한 번 작업을 두 번, 한 번을하고 같은
레자

2

빠르고 간단합니다 : Apache를 사용하는 경우 Apache24 \ conf \ httpd.conf 파일을 편집하고 "loadmodule"을 검색하십시오. 로드 모듈이 다음과 같은 .dll을 참조하는 것을 확인하면

LoadModule php7_module "e : /x64Stack/PHP/php7.1.9/php7apache2_4.dll"AddHandler
application / x-httpd-php .php
PHPIniDir "e : /x64Stack/PHP/php7.1.9"

그런 다음 당신이 원하는 안전이 활성화 댓글 또는 TS - 스레드 안전 버전 .

그렇지 않으면 CGI와 함께 IIS 또는 Apache를 사용하는 경우 NTS 버전입니다.

여러 스택을 사용하고 여러 서버 및 PHP 버전 내에서 경로 / PHP 또는 서버 버전이 당신을 던지지 않도록하십시오.


0

Crack 외에도 5.4부터 내장 웹 서버를 사용할 수 있습니다 (잘 작동합니다!).

경고이 웹 서버는 응용 프로그램 개발을 지원하도록 설계되었습니다. 테스트 목적이나 제어 된 환경에서 실행되는 애플리케이션 데모에도 유용 할 수 있습니다. 완전한 기능을 갖춘 웹 서버가 아닙니다. 공용 네트워크에서 사용해서는 안됩니다.


13
당신은 당신이 말하는 것에 대한 일종의 참조를 추가해야합니다. 내장 웹 서버는 무엇입니까? 이것이 ThreadSafe 대 NotThreadSafe와 어떤 관련이 있습니까?
Despertar 2014 년

2
기본 제공 웹 서버에 따르면 그는 PHP의 기본 제공 웹 서버 ( php -S ip:port) 를 의미 한다고 생각합니다. 스레드 안전성과의 관계에 대해서는 전혀 모릅니다.
데이비드 Refoua
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.