>  기사  >  백엔드 개발  >  PHP에서 nts와 ts의 차이점은 무엇입니까

PHP에서 nts와 ts의 차이점은 무엇입니까

WBOY
WBOY원래의
2022-02-21 15:21:153989검색

PHP에서 nts와 ts의 차이점: ts는 스레드 안전성을 의미하며 다중 스레드 액세스에 잠금 메커니즘이 사용됩니다. 한 스레드가 이 클래스의 특정 데이터에 액세스하면 다른 스레드가 동시에 액세스할 수 없습니다. 스레드 액세스 보호를 제공하지 않고 스레드가 아닌 안전을 의미하며 여러 스레드가 동시에 동일한 데이터를 작동할 수 있습니다.

PHP에서 nts와 ts의 차이점은 무엇입니까

이 문서의 운영 환경: Windows 10 시스템, PHP 버전 7.1, Dell G3 컴퓨터.

PHP에서 nts와 ts의 차이점은 무엇인가요?

PHP 개발 및 프로덕션 환경을 설정하는 과정에서 PHP 언어 파서를 설치해야 합니다. 공식에서는 TS(Thread-Safe) 버전과 NTS(Non-Thread-Safe) 버전의 두 가지 버전을 제공합니다. 때로는 개발 환경과 실제 프로덕션 환경이 다르기 때문에 해당 버전도 설치해야 합니다. PHP 버전.

향후 참조를 위해 여기에 메모를 기록하세요...

1. 소개

TS:

TS(Thread-Safety)는 여러 스레드에서 액세스할 때 잠금 메커니즘이 사용됨을 의미합니다. 스레드가 이 클래스의 특정 데이터에 액세스하면 데이터가 잠기고 보호됩니다. 스레드가 읽기를 완료한 후에만 다른 스레드가 데이터에 액세스하고 사용할 수 있다는 장점이 있습니다. 데이터 불일치나 데이터 불일치 상황이 발생하지 않지만 NTS보다 시간이 오래 걸립니다.

PHP가 ISAPI 모드(Apache에서 일반적으로 사용됨)로 로드될 때 TS 버전을 선택하세요.

NTS:

NTS(None-Thread Safe)는 스레드로부터 안전하지 않으며 데이터 액세스 보호를 제공하지 않습니다. 여러 스레드가 동일한 데이터를 차례로 또는 동시에 작동할 수 있습니다. 데이터 혼란(즉, 더티 데이터)을 유발하므로 일반 작업의 실행 시간이 TS보다 짧습니다.

PHP가 로드되고 FAST-CGI 모드에서 실행될 때 더 나은 성능을 위해 TNS 버전을 선택하십시오.

ISAPI:

ISAPI(인터넷 서버 응용 프로그래밍 인터페이스)는 일반적으로 다음과 같이 http 서버에 의해 로드되는 것을 나타냅니다. 서버는 Microsoft에서 제안한 모듈 형태로 실행되므로 win 아래의 apache 및 iis와 같은 win 플랫폼에서만 실행할 수 있는 반면(빠른 cgi 모드는 더 안정적임) Linux의 php는 Apache 모듈( 일반적인 방법) 또는 php-fpm(이 방법은 NGINX+PHP 작업에 더 적합합니다).

CGI:

cgi(Common Gateway Interface): HTTP 서버가 클라이언트 시스템의 프로그램과 "대화"하는 도구입니다. 간단히 말해서 cig는 서버와 통신할 수 있는 배경 언어입니다. 이때 PHP는 독립적인 프로그램으로 실행되고 있어 메모리를 소모하는 특징이 있습니다.

FAST CGI:

fast cgi는 항상 실행될 수 있으며, 매번 새로운 프로세스를 포크하는 데 시간이 걸리지 않습니다. 이 방법은 언어 독립적이고 확장 가능한 아키텍처 CGI 개방형 확장입니다. 주요 동작은 CGI 인터프리터 프로세스를 메모리에 유지하여 더 높은 성능을 얻는 것입니다.

FAST-CGI는 CGI 인터프리터의 단점을 해결하기 위해 Microsoft에서 제안한 개선안입니다. 요청이 웹 서버로 전송되면 웹 서버는 항상 CGI 인터프리터 프로세스를 포크하여 요청을 처리합니다. 프로세스가 완료된 후 웹 서버는 결과를 반환하고 표시합니다. 사용자가 동일한 페이지를 다시 요청하면 웹 서버는 요청을 처리하기 위해 새로운 프로세스를 포크하므로 이는 비효율적입니다(CGI가 비판받는 주된 이유). FAST-CGI 인터프리터를 사용하면 요청이 실행된 후 프로세스가 로그아웃되지 않지만, 개선된 프로세스는 휴면 기간에 들어가고 새로운 요청이 수신되면 개선된 프로세스가 다시 활성화되어 처리됩니다. FAST-CGI는 CGI에 비해 프로세스를 반복적으로 생성하는 데 따른 리소스 사용량을 줄입니다.

프로세스 및 스레드: 프로세스에는 하나 이상의 스레드가 있습니다.

2. 선택

보통 PHP + Apache 조합에서 승리하고 ISAPI 모드에서 실행합니다.

Linux에는 일반적으로 두 가지 유형이 있습니다.

Apache + PHP PHP는 일반적으로 Apache의 모듈로 실행됩니다.

Nginx + PHP는 phpfast cgi 모드, 즉 php-fpm 모드에 적합합니다. 높은 수준의 사용자에게는 동시성과 높은 부하가 좋은 성능을 제공하므로 많은 웹사이트에서 이 방법을 사용하여 환경을 구축합니다.

Nginx는 Apache보다 구성이 훨씬 적기 때문에 인적 오류가 발생할 확률은 적지만 Apache는 Nginx보다 안정적입니다.

이전에는 말도 안 되는 내용이 너무 많았는데, 여기에 핵심이 있습니다...

요약:

ISAPI 모드에서 실행할 때 TS 스레드 안전 버전을 사용하세요

FAST에서 실행할 때 NTS 스레드 안전이 아닌 버전을 사용하세요 -CGI 또는 PHP-FPM 모드

보통 Windows에서 Apache+PHP는 TS를, IIS(fast-cgi)+PHP는 TNS를 선택합니다

보통 Linux에서 Apache+PHP는 TS, Nginx를 선택합니다. + PHP, TNS

선택 권장 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 nts와 ts의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.