2017-04-19 11 views
0

긴 이야기를 짧게하기 위해 데이터베이스에서 사용자 암호의 소금을 검색하려고합니다. 내가 계획 한대로 누군가가 로그인을 시도하면 사용자 이름을 사용하고 해당 계정에 저장된 소금을 찾고 서버가이를 반향하게됩니다. 내 질문은 여러 사람이 동시에 로그인하려고하면 동일한 문에서 두 개의 소금을 반향 시키거나 각 사용자가 연결될 때마다 각각 반향을 일으키는 지 여부입니다.echo는 PHP에서 서버에서 어떻게 작동합니까?

+3

모든 요청은 분리되어 처리됩니다. – zerkms

+3

간단한 답 : * 아니요 *. 더 많은 정보를 원한다면, PHP가 어떻게 처리되고 어떻게 동작 하는지를 살펴 봐야합니다. 역동적 인 HTML 생성 언어처럼 보입니다 ... 도움이 되었으면합니다. – Nytrix

+0

제목에 질문이 반영되지 않았습니다. IMHO. –

답변

0

리눅스/유닉스 및 nginx를 사용한다고 가정합니다.

먼저 기억하십시오 Linux/UNIX에서 모든 것은입니다.

아래와 같이 실행 요청 :

브라우저 ->의 nginx -> (FastCGI를) -> PHP-FPM 실행 스크립트 -> (FastCGI를) -> nginx-> 브라우저

요청은 nginx에 도착하면 FastCGI 프로토콜에 의해 php-fpm으로 전송됩니다. php-fpm은 마스터 작업자 구조와 작동합니다. 많은 작업자 프로세스가 있으며 요청은 작업자 프로세스로 전송됩니다. "에코 안녕하세요"실행할 때

, 그것은 ECHO를 연산 코드에 컴파일하고 zendVM는 C 함수를 쓰기() 마지막을 호출합니다.

ssize_t write (int fd, const void * buf, size_t count);

모든 것이 파일입니다. 그리고 소켓도 파일이므로 "hello"finally.And "hello"는 nginx에 대한 응답이 될 것이고 nginx는 브라우저에 응답 할 것입니다.

많은 요청에 동일한 메시지가 표시 될 것을 염려 할 필요가 없습니다. FastCGI Specification

전송 연결을 통해 흐르는 모든 데이터는

FastCGI를 기록에서 수행된다. FastCGI 레코드는 두 가지를 수행합니다. 첫째, 레코드 은 여러 독립적 인 FastCGI 요청 간의 전송 연결을 다중화합니다. 이 멀티플렉싱은 이벤트 드리븐 또는 멀티 스레드 프로그래밍 기법을 사용하여 동시 요청을 처리 할 수있는 응용 프로그램을 지원합니다. 둘째, 레코드는 단일 요청 내에서 각 방향으로 여러 개의 독립적 인 데이터 스트림을 제공합니다. 이 방법으로 인스턴스의 경우 stdout 및 stderr 데이터는 별도의 연결이 필요한 대신 응용 프로그램에서 웹 서버로의 단일 연결 연결을 통해 전달할 수 있습니다.

그리고

응용 프로그램 레코드 정보에 대한 특정 request의 로 식별 는 구성 요소를 RequestID가 포함되어 있습니다.

많은 요청이 있더라도 FastCGI 프로토콜은 각 요청마다 각 요청을 식별하는 서로 다른 requestId를 보장합니다.

관련 문제