복붙노트

PHP 스크립트에 대한 동시 요청

PHP

PHP 스크립트에 대한 동시 요청

PHP 엔진이 이미 서버에서 스크립트를 실행하는 중일 때 동일한 스크립트에 대한 다른 동시 브라우저 요청은 어떻게됩니까?

해결법

  1. ==============================

    1.서버는 구성에 따라 일반적으로 동시에 수백 개의 요청을 처리 할 수 ​​있습니다. Apache를 사용하는 경우 MaxClients 구성 옵션은 다음과 같이 말합니다.

    서버는 구성에 따라 일반적으로 동시에 수백 개의 요청을 처리 할 수 ​​있습니다. Apache를 사용하는 경우 MaxClients 구성 옵션은 다음과 같이 말합니다.

    두 클라이언트가 동일한 페이지를 요청한다는 사실은 문제가되지 않습니다.

    그래서 :

    아니 ; 다음을 제외하고는 :

    아니오 : 이것은 한 명의 사용자 만이 동시에 웹 사이트를 사용할 수 있음을 의미합니다. 이건 아주 좋지 않을거야, 그렇지?

    그것이 사실이라면 누군가가 대답했는지보기 위해 같은 순간에 F5를 때리는 경우이 답변을 게시 할 수 없습니다. (글쎄, 그래서 PHP는 아니지만 원칙은 동일합니다)

    예 ^^

    당신이 OP와 코멘트를 편집 한 후에 편집 :

    "스크립트 인스턴스"와 같은 것은 존재하지 않습니다. 스크립트에 대한 요청이 어디에서 발생하는지 간단히 말하면 다음과 같습니다.

    실제로 두 명의 사용자가 동일한 PHP 스크립트 (또는 모두 동일한 PHP 파일을 포함하는 별개의 PHP 스크립트)에 요청을 보내도록 할 수 있습니다. 그게 분명히 문제가 아니거나, 내가 일한 웹 사이트 중 어느 것도 작동하지 않을거야!

  2. ==============================

    2.2 명의 클라이언트가 동시에 서버를 호출하면 서버는 거의 동시에 두 클라이언트에 모두 응답 할 수 있습니다. 여기서 클라이언트는 브라우저 수준으로 정의합니다.

    2 명의 클라이언트가 동시에 서버를 호출하면 서버는 거의 동시에 두 클라이언트에 모두 응답 할 수 있습니다. 여기서 클라이언트는 브라우저 수준으로 정의합니다.

    동일한 컴퓨터에서 동일한 웹 사이트 / 페이지를 동시에로드하기 위해 2 대의 브라우저를 사용하는 경우이 두 가지를 동시에로드해야한다는 것을 의미합니다.

    그러나 우리가 PHP에 관해서 이야기하고 있기 때문에, 당신은 세션에 대한 특별한 노트를 가지고 갈 필요가 있습니다. 페이지에서 세션을 사용하는 경우 서버는 한 번에 한 페이지 씩만 제공합니다. 이는 스크립트가 종료 될 때까지 세션 파일이 잠기기 때문입니다.

    이 예를보십시오. 2 개의 파일은 같은 세션 일명 동일한 브라우저에서로드됩니다.

          scripta.php requested                 scripta.php served
    ------+---+---------------------------------+------------------------>
              scripta.php started
    
                   scriptb.php requested           scriptb.php started
    ---------------+-------------------------------+-----------------+--->
                                                                     scriptb.php served.
    

    scriptb.php는 scripta.php가 제공 된 후에 시작됩니다. 이것은 scripta.php가 시작되었을 때 세션 파일이 다른 스크립트에 잠겨서 scripta.php가 세션 파일에 쓸 수 있기 때문입니다. scripta.php가 완료되면 세션 파일의 잠금이 해제되어 다른 스크립트에서이를 사용할 수 있습니다. 따라서 scriptb.php는 세션 파일이 해제 될 때까지 기다렸다가 세션 파일을 잠그고 사용합니다.

    이 프로세스는 동일한 세션 파일에 여러 스크립트가 기록하는 것을 지연시켜 지연을 일으키는 것을 방지하기 위해 계속 반복됩니다. 따라서 세션을 더 이상 사용하지 않을 때는 특히 iframe이나 AJAX를 많이 사용하는 웹 사이트에서 session_write_close ()를 호출하는 것이 좋습니다.

  3. ==============================

    3.매우 비표준 설정을 실행하지 않는 한 웹 서버 (Apache, IIS, nginx 등)에는 서버로 들어오는 요청마다 PHP를 개별적으로 실행하는 여러 프로세스가 있습니다. 동시 요청은 동시에 처리됩니다.

    매우 비표준 설정을 실행하지 않는 한 웹 서버 (Apache, IIS, nginx 등)에는 서버로 들어오는 요청마다 PHP를 개별적으로 실행하는 여러 프로세스가 있습니다. 동시 요청은 동시에 처리됩니다.

  4. ==============================

    4.그냥 나 자신을 만났다. 기본적으로 session_write_close ()를 호출하여 단일 사용자 잠금을 방지해야합니다. session_write_close ()를 호출하면 세션 변수를 수정하지 말아야한다. 일단 호출하면 세션을 이후로 읽기 전용으로 취급합니다.

    그냥 나 자신을 만났다. 기본적으로 session_write_close ()를 호출하여 단일 사용자 잠금을 방지해야합니다. session_write_close ()를 호출하면 세션 변수를 수정하지 말아야한다. 일단 호출하면 세션을 이후로 읽기 전용으로 취급합니다.

  5. from https://stackoverflow.com/questions/1430883/simultaneous-requests-to-php-script by cc-by-sa and MIT license