ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ соСдинСния с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постоянныС соСдинСния?

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ соСдинСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой связи с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ скрипта. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ запроса Π½Π° постоянноС соСдинСниС PHP Π²Π½Π°Ρ‡Π°Π»Π΅ провСряСт, имССтся Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ постоянноС соСдинСниС (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… обращСниях) ΠΈ, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ. Π’ случаС Ссли ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ соСдинСния Π½Π΅Ρ‚, PHP создаёт Π½ΠΎΠ²ΠΎΠ΅. Под "ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ" подразумСваСтся соСдинСниС, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ хостС с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ (Ссли ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹).

НСт способа Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ соСдинСниС ΠΈΠ»ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСрнётся ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ соСдинСниС ΠΈΠ»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ (Ссли всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ соСдинСния заняты ΠΈΠ»ΠΈ запрос обслуТиваСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссом, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΠ» соСдинСний).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ постоянныС соСдинСния PHP нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для:

  • назначСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ сСссии Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Π²Π΅Π±-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
  • создания ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ нСсколько запросов
  • ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ запроса для ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса ΠΈ собирания Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ соСдинСния Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, которая Π±Ρ‹Π»Π° Π±Ρ‹ нСдоступна ΠΏΡ€ΠΈ использовании нСпостоянных соСдинСний.

Π’Π΅Π±-запросы

БущСствуСт Π΄Π²Π° основных способа использования PHP сСрвСром для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π΅Π±-страниц.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PHP ΠΊΠ°ΠΊ CGI-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ. ΠŸΡ€ΠΈ этом PHP-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ создаётся ΠΈ уничтоТаСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ страницС (PHP-скрипту). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ уничтоТаСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса ΠΊ сСрвСру, всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌ рСсурсы (Π² Ρ‚ΠΎΠΌ числС ΠΈ соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…) Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² этом случаС ΠΎΡ‚ использования постоянных соСдинСний Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ выигрываСтся: ΠΎΠ½ΠΈ просто Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² запускС PHP-FPM ΠΈΠ»ΠΈ PHP Π² качСствС модуля Π² многопроцСссорном Π²Π΅Π±-сСрвСрС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² настоящСС врСмя являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Apache. Π’ Ρ‚Π°ΠΊΠΈΡ… конфигурациях ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ процСсс (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… процСссов (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ…), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ фактичСски ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ Π²Π΅Π±-страниц. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ сСрвСру запрос пСрСнаправляСтся ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ занят обслуТиваниСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΊΠ»ΠΈΠ΅Π½Ρ‚ выполняСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запрос ΠΊ сСрвСру, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ процСссом, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ. ПослС открытия постоянного соСдинСния каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ установлСнноС Ρ€Π°Π½Π΅Π΅ соСдинСниС с SQL-сСрвСром.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π΅Π±-запросы, посмотритС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Server APIΒ» Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ phpinfo() ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы PHP_SAPI, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π²Π΅Π±-запроса.

Если API сСрвСра являСтся Β«Apache 2 HandlerΒ» ΠΈΠ»ΠΈ Β«FPM/FastCGIΒ», Ρ‚ΠΎ постоянныС соСдинСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для всСх запросов, обслуТиваСмых ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ процСссом. Для любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ значСния постоянныС соСдинСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PHP Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ процСсс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ скрипта, постоянныС соСдинСния Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно ΠΌΠ΅ΠΆΠ΄Ρƒ скриптами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, поэтому Π½Π΅Ρ‚ смысла ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… скриптах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ задания Cron ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Однако ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ сСрвСрС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обслуТиваСт ΠΌΠ½ΠΎΠ³ΠΎ запросов ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ собствСнноС соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ соСдинСния ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ большого количСства SQL-соСдинСний Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ощутимая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° сСрвСр. Π’ΠΎ, насколько Π²Π΅Π»ΠΈΠΊΠ° эта Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, зависит ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². НапримСр, ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, какая ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, находится Π»ΠΈ ΠΎΠ½Π° Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ ΠΈ Π²Π΅Π±-сСрвСр, насколько Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° машина, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ установлСн SQL-сСрвСр, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ случаС, Ссли Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° установку соСдинСния Π²Π΅Π»ΠΈΠΊΠΈ, постоянныС соСдинСния способны сущСствСнно ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ процСссу Π½Π° протяТСнии всСго ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ соСдинСниС вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы, которая взаимодСйствуСт с SQL-сСрвСром. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс, ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠΈΠΉ постоянноС соСдинСниС, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ своё собствСнноС соСдинСниС с сСрвСром. НапримСр, Ссли Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ 20 Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ скрипт, использовавший постоянноС соСдинСниС с SQL-сСрвСром, получится 20 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… соСдинСний с SQL-сСрвСром, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ нСдостатки: ограничСния ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки: ΠΏΡ€ΠΈ использовании Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ количСством Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ количСством Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ процСссами постоянных соСдинСний. НапримСр, Ссли Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… позволяСт 16 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соСдинСний, ΠΈ Π²ΠΎ врСмя Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сСрвСр 17 Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ соСдинСниС, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Если Π² ΠΊΠΎΠ΄Π΅ содСрТатся ошибки, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ соСдинСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹), Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… с 16 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ вскорС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ.

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ соСдинСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ количСство соСдинСний, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ соСдинСния для ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ обслуТивали. Если для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° запросов запускаСтся большоС количСство Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΈΠΌΠΈ соСдинСния ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½ ΠΈΠ»ΠΈ сСрвСр Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ соСдинСниС.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ максимальноС количСство ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½ΠΎΠ΅ сСрвСром Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимальноС количСство Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов Π²Π΅Π±-запросов (плюс любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ использованиС, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ задания Cron ΠΈΠ»ΠΈ административныС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний (врСмя оТидания). Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя оТидания ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство постоянных соСдинСний, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ нСдостатки: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ состояния соСдинСния

НСкоторыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ очистку ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании соСдинСния; Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ эту Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° усмотрСниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° прилоТСния. Π’ зависимости ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ модуля Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ конструкции прилоТСния ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ручная очистка. К измСнСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ соСдинСний, относятся:

  • Выбранная / базовая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…
  • Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†
  • ΠΠ΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
  • Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  • Настройки ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, спСцифичныС для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ бСсконСчной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… запросов ΠΈ/ΠΈΠ»ΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ измСнСниям ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании соСдинСния.

Π’Ρ‹Π±ΠΎΡ€ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании соСдинСния запросы Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΈΠ»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли схСмы достаточно ΠΏΠΎΡ…ΠΎΠΆΠΈ).

Если Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ запросы Π½Π΅ смогут Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

ΠžΡ‡ΠΈΡΡ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ дСструкторов классов ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ register_shutdown_function(). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… прокси-сСрвСров для ΠΏΡƒΠ»Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² свой Π½Π°Π±ΠΎΡ€ возмоТностСй.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слова

Учитывая ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ нСдостатки, описанныС Π²Ρ‹ΡˆΠ΅, Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ постоянныС соСдинСния Π±Π΅Π· Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обдумывания. Π˜Ρ… Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· внСсСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки сСрвСра Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Π΅Π±-сСрвСра ΠΈ/ΠΈΠ»ΠΈ PHP-FPM.

РассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ исслСдованиС ΠΈ устранСниС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° созданиС соСдинСний (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ DNS-поиска Π½Π° сСрвСрС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈΠ»ΠΈ использованиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… прокси-сСрвСров для объСдинСния соСдинСний.

Для Π²Π΅Π± API с большим ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… срСд выполнСния ΠΈΠ»ΠΈ сСрвСров ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 7 notes

up
22
Tom ΒΆ
16 years ago
There's a third case for PHP: run on a fastCGI interface. In this case, PHP processes are NOT destroyed after each request, and so persistent connections do persist. Set PHP_FCGI_CHILDREN << mysql's max_connections and you'll be fine.
up
14
ambrish at php dot net ΒΆ
15 years ago
In IBM_DB2 extension v1.9.0 or later performs a transaction rollback on persistent connections at the end of a request, thus ending the transaction. This prevents the transaction block from carrying over to the next request which uses that connection if script execution ends before the transaction block does.
up
14
php at alfadog dot net ΒΆ
12 years ago
One additional not regarding odbc_pconnect  and possibly other variations of pconnect:
 
If the connection encounters an error (bad SQL, incorrect request, etc), that error will return with  be present in odbc_errormsg for every subsequent action on that connection, even if subsequent actions don't cause another error.

For example:

A script connects with odbc_pconnect.
The connection is created on it's first use.
The script calls a query "Select * FROM Table1".
Table1 doesn't exist and odbc_errormsg contains that error.

Later(days, perhaps), a different script is called using the same parameters to odbc_pconnect.
The connection already exists, to it is reused.
The script calls a query "Select * FROM Table0".
The query runs fine, but odbc_errormsg still returns the error about Table1 not existing.

I'm not seeing a way to clear that error using odbc_ functions, so keep your eyes open for this gotcha or use odbc_connect instead.
up
14
christopher dot jones at oracle dot com ΒΆ
18 years ago
For the oci8 extension it is not true that " [...] when using transactions, a transaction block will also carry over to the next script which uses that connection if script execution ends before the transaction block does.".  The oci8 extension does a rollback at the end scripts using persistent connections, thus ending the transaction.  The rollback also releases locks. However any ALTER SESSION command (e.g. changing the date format) on a persistent connection will be retained over to the next script.
up
11
ynzhang from lakeheadu canada ΒΆ
17 years ago
It seems that using pg_pconnect() will not persist the temporary views/tables. So if you are trying to create temporary views/tables with the query results and then access them with the next script of the same session, you are out of luck. Those temporary view/tables are gone after each PHP script ended. One way to get around this problem is to create real view/table with session ID as part of the name and record the name&creation time in a common table. Have a garbage collection script to drop the view/table who's session is expired.
up
10
jean_christian at myrealbox dot com ΒΆ
23 years ago
If anyone ever wonders why the number of idle db process (open connections) seems to grow even though you are using persistent connections, here's why:

"You are probably using a multi-process web server such as Apache. Since
database connections cannot be shared among different processes a new
one is created if the request happen to come to a different web server
child process."
up
8
andy at paradigm-reborn dot com ΒΆ
19 years ago
To those using MySQL and finding a lot of leftover sleeping processes, take a look at MySQL's wait_timeout directive. By default it is set to 8 hours, but almost any decent production server will have been lowered to the 60 second range. Even on my testing server, I was having problems with too many connections from leftover persistent connections.