찾다

 >  Q&A  >  본문

PHP 스크립트가 실행된 후 MySQL의 연결이 끊어 집니까?

스크립트에 mysql에 연결하는 SQL 문이 있습니다. 실행되면 mysql 서버는 연결을 처리하기 위해 새 스레드(또는 프로세스?)를 엽니다. ) . mysql 긴 연결은 무엇입니까? 갑자기 아무것도 이해하지 못하는 것 같은 느낌이 들었습니다. . .

PHP中文网PHP中文网2749일 전880

모든 응답(5)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-05-16 13:08:27

    프레임워크를 수동으로 닫으려면 클래스의 소멸자에 닫는 코드를 작성하세요. 일반적으로 싱글톤 모드에서 mysql에 연결되므로 걱정하지 마세요.

    회신하다
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:08:27

    1.mysql은 해당 트랜잭션을 처리하는 프로세스를 시작합니다

    2. Apache httpd 프로세스에서 연결을 끊습니다. Apache는 요청을 수신하고 mod로 전달합니다. 전체 프로세스 PHP는 Apache 모듈 모드에서 실행됩니다. httpd 프로세스 중간

    3. 짧은 링크의 단점: 연결을 생성하고 프로그램이 실행된 후 mysql에 대한 링크가 자동으로 끊어집니다. 그래서 PHP가 몇 번이나 실행되는지에 따라 이러한 생성 및 릴리스 프로세스가 많이 발생하게 됩니다. 연결을 자주 만들고 해제하면 CPU 리소스가 소모됩니다.

    으아악

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:08:27

    PHP만으로는 긴 연결을 유지할 수 없지만 이를 달성할 수 있는 방법이 있습니다.

    Apache+php_module 모드에서 PHP를 실행하는 경우 mysql_pconnect를 통해 영구 링크를 설정할 수 있지만 이 링크는 Apache에 의해 유지됩니다(공식 문서에 설명된 대로 mysql_pconnect는 nginx+fpm에서 긴 연결을 유지할 수 없습니다)

    nginx+fpm fpm은 일반적으로 PDO 확장을 통해 데이터베이스에 연결할 때 긴 연결을 설정할 수 있으며 각 fpm은 영구 링크를 유지합니다. 그러나 시스템을 기준으로 FPM 프로세스 수와 최대 데이터베이스 연결 수를 평가할 필요가 있습니다. PHP 요청이 너무 적으면 유휴 연결 수가 많아지면 리소스가 낭비됩니다(mysql wait_time을 적절하게 구성해야 함). ). PHP 요청이 너무 많으면 FPM 프로세스가 너무 많아 데이터베이스 제한을 초과하게 됩니다. .

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-05-16 13:08:27

    일반적으로 php는 sql을 실행할 때마다 짧은 링크를 생성합니다. 실행이 완료되면 php는 링크를 끊습니다(아마도 타임아웃 후에 MySQL은 링크를 끊습니다)

    요즘 이러한 IO 오버헤드를 줄이는 일반적인 방법은 데이터베이스 연결 풀을 구축하고, 지정된 수의 연결을 유지하며, 이를 사용할 때 관련 리소스를 직접 확보하는 것입니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:08:27

    원본 PHP를 사용하는 경우 수동으로 종료해야 합니다. 프레임워크는 일반적으로 패키지되어 있으며 직접 사용할 수 있습니다

    회신하다
    0
  • 취소회신하다