sql >> Databáze >  >> RDS >> Mysql

Sdružování připojení vs trvalé připojení mysqli

Ve skutečnosti jde o sdružování připojení a trvalé připojení totéž platí v případě mysqli v PHP.

Trvalé připojení v tomto případě odkazuje na připojení MySQL otevřené z PHP skriptu, které zůstane otevřené i po dokončení skriptu, aby bylo možné jej znovu použít v některých pozdějších spuštěních.

Sdružování připojení znamená, že existuje fond trvalých připojení udržovaných PHP. Jedno nečinné připojení z tohoto fondu je přiděleno skriptu PHP, který se chce připojit k MySQL a po dokončení skriptu se vrátí do fondu.

Mohli byste se divit, proč vůbec potřebujeme fond připojení MySQL, proč pro všechny skripty nepoužijeme pouze jedno trvalé připojení?

Existují dva důvody:

  • PHP vytváří fond připojení MySQL na základě host/port/username/password použitý. Pokud se jeden skript chce připojit k MySQL pomocí nějakého host/port/username/password kombinaci, PHP hledá nečinné trvalé připojení, které má stejné hodnoty. Pokud není nalezen, vytvoří se nové trvalé připojení s tímto host/port/username/password kombinace. Potřebujeme tedy alespoň tolik různých trvalých připojení, kolik je různých host/port/username/password hodnoty používané všemi skripty.
  • Nemůžete provádět dva příkazy SQL na jednom připojení MySQL současně. To se může stát, když jsou současně spuštěny dva PHP skripty. Když dva skripty chtějí komunikovat s MySQL současně, vytvoří se dvě trvalá připojení MySQL. Počet trvalých připojení ve fondu se rovná poslednímu počtu maximálního počtu spuštěných paralelních PHP skriptů nebo se rovná hornímu limitu nastavenému v php.ini .

Důležité upozornění:

Fondy připojení MySQL (a jakékoli jiné fondy připojení) mohou existovat pouze v případě, že se PHP spouští jako plugin webového serveru . Fondy nefungují, když pracuje v režimu rychlého cgi nebo jakýmkoli jiným způsobem, když se spustitelný PHP ukončí po spuštění skriptu.

Edit:Sdružování připojení MySQL lze použít v režimu rychlého cgi PHP, pokud je webový server nakonfigurován pro opětovné použití jednoho procesu rychlého cgi PHP pro více požadavků. Pokud je proces PHP fast-cgi nakonfigurován tak, aby skončil po obsloužení jednoho požadavku, všechna jeho připojení k MySQL jsou uzavřena.



  1. Je lepší provádět mnoho příkazů SQL s jedním připojením, nebo se pokaždé znovu připojit?

  2. Zřetězení řetězců v MySQL

  3. CONVERT() vs TRY_CONVERT v SQL Server:Jaký je rozdíl?

  4. Jak mohu zřetězit řetězce z poddotazu do jednoho řádku v mysql?