sql >> Databáze >  >> RDS >> Oracle

Plně rozumím PDO ATTR_PERSISTENT

Pohled Apačů

Apache má jeden nadřazený proces. Tento proces vytváří podřízené procesy, které budou zpracovávat všechny požadavky přicházející na webový server. Počáteční množství podřízených procesů spouštěných při spuštění webového serveru je konfigurováno StartServers direktiva v konfiguraci apache. Počet se podle potřeby zvyšuje se zvyšujícím se počtem požadavků zasahujících webový server až do ServerLimit je dosaženo.

PHP a trvalá připojení

Pokud PHP (běželo jako mod_php, protože CGI jsou všechny zdroje uvolněny na konci provádění skriptu) je nyní vyzváno, aby vytvořilo trvalé spojení s databází pro požadavek, toto spojení je pozastaveno i po dokončení skriptu. hold je spojení mezi podřízeným procesem Apache, kterým byl požadavek zpracován, a databázovým serverem a může být znovu použito jakýmkoli požadavkem, který je zpracováván právě tímto podřízeným procesem.

Pokud je z nějakého důvodu (neptejte se mě přesně proč) podřízený proces obsazený déle než skutečný požadavek a přijde další požadavek, nadřazený proces Apache přesměruje tento požadavek na (nový) podřízený proces, který možná nebyl vytvořen. připojení k databázi do této doby. Pokud je to nutné během provádění skriptu, zvýší SID, jak jste si všimli. Nyní existují dvě připojení, která mohou udržovat dva různé podřízené procesy Apache.

Mějte na paměti, že...

Je důležité vědět, že i to může způsobit spoustu problémů. Pokud dojde k nekonečné smyčce nebo přerušené transakci či jiné, může dojít při provádění skriptu k nepředvídatelné chybě, spojení je zablokováno a nelze jej znovu použít .Může se také stát, že jsou využita všechna dostupná připojení databáze, ale o přístup k databázi se pokouší další podřízený proces serveru apache. Tento proces je prozatím zablokován, dokud nebude připojení uvolněno databází resp. apache (vypršel časový limit nebo dobrovolně ukončením). Jakékoli další informace o tomto tématu na této stránce:http://www.php.net/manual/en/features.persistent-connections.php

Doufám, že jsem vše, co jsme probrali v našem komentářovém rozhovoru, shrnul správně a na nic jsem nezapomněl. Pokud ano, zanechte mi prosím nápovědu a já ji doplním. :)

Upravit:

Právě jsem dočetl článek @MonkeyZeus zmíněný v tomto komentáři. Popisuje proces, který jsem shrnul výše, a poskytuje užitečné informace o tom, jak optimalizovat váš server Apache, aby lépe spolupracoval s trvalými připojeními. Lze jej použít s nebo bez backendů databáze Oracle, i když. Měli byste se podívat:http://www.oracle.com/technetwork/articles/coggeshall-persist-084844.html



  1. Jak vytvořit hierarchický rekurzivní dotaz MySQL?

  2. Hromadné vkládání datových souborů do SQL Serveru

  3. Spring + Hibernate:Využití mezipaměti plánu dotazů

  4. Funkce JSON_TABLE() v Oracle