원래 IIS 기반 ASP, ASP.NET으로만 개발하다 이번에 PHP를 제대로 스터디하며 하나씩 배우고 있다.
원래 PHP에 MYSQL을 주로 사용을 하지만 나는 이제까지 MSSQL만 사용했고 회사 프로젝트에 MSSQL을 사용해야 돼서
SQL 서버 드라이버를 설치하게 되었다.
그런데 의문은??? 같은 DLL인데 TS, NTS 2가지의 버전이 있었다. ㅡoㅡ 오호 이건 도대체 멀징?
그래서 의문점을 가지고 알아보았다.
예전 자료를 찾아보니 PHP는 TS 버전만 빌드되었다고 한다.
아무래도 리눅스 기반으로 개발되었으니 기존 리눅스/유닉스 계열이 지원하는 Multi-process 방식이었기 때문이다.
php가 대중화되면서 iis와 연동하게 되었고 Multi-thread 방식인 윈도우 계정에 이 TS버전을 빌드하게 되면서 문제가 발생하였다.
PHP를 IIS와 연동하기 위해 CGI(FastCGI) 또는 ISAPI(Internet Server API) 방식으로 연동을 해야 하는데 기존에 PHP와 관련된 모듈은 TS로 다 개발되었기 때문에 ISAPI로 연동하였을 경우 서버가 다운되는 대참사가 발생하였다.
이를 방지하기 위해 CGI 방식으로 변경하여 사용했으나 퍼포먼스 쪽에 문제가 생겼고 이를 개선하기 위해 나온
버전이 NTS(Non-Thread Safe) 버전이다.
처음에 아무 생각 없이 Dynamic Extensions에 추가를 했는데 동작을 안 해서 이것저것 자료를 찾다 보니 알게 되었다.
이번에 Microsoft Drivers 5.9 for PHP for SQL Server를 사용해 작업하고 있는데....
php_pdo_sqlsrv_80_nts_x64.dll
php_sqlsrv_80_nts_x64.dll
두 가지를 Dynamic Extensions 추가해 사용하면 정상적으로 사용이 된다.
참.. 새로운 걸 사용한다는 게 쉬운 게 아니네.. ㅎㅎㅎ
참고로 더 확인해보니.. 윈도우인 경우에도 종류에 따라 사용 버전이 틀려진다.
Windows + IIS(FastCGI) : NTS 버전
Windows + Apache : TS 버전
이렇게 사용하면 된다. ^^;;; 윈도우 기반이더라도 Apache를 통해 서비스한다면 TS 버전 사용이 가능하다.
'법, 용어 > 용어' 카테고리의 다른 글
‘썬더볼트’가 뭐길래…케이블 하나로 데이터부터 영상까지? (2) | 2024.12.05 |
---|---|
용어 파인튜닝 (0) | 2024.12.05 |
[윤창인 회계사의 세무조사 가이드] FIU, STR, CTR (2) | 2024.12.03 |
ESB (Enterprise Service Bus) 개념 및 EAI와 차이점 (0) | 2024.11.28 |
보안 용어 정리! (IAM,PAM,Federated SSO) (0) | 2024.11.18 |