sql >> Databasteknik >  >> RDS >> Mysql

PHP MySQL-anslutningsbeständighet

Beständigheten görs av kopian av PHP som är inbäddad i webbservern. Vanligtvis skulle du ha rätt - om PHP kördes i CGI-läge skulle det vara omöjligt att ha en beständig anslutning, eftersom det inte skulle finnas något kvar att kvarstå när begäran är klar och PHP stängs av.

Men eftersom det finns en kopia av PHP inbäddad i webbservern och webbservern själv fortsätter att köras mellan förfrågningar, är det möjligt att upprätthålla en pool av beständiga anslutningar inom den "permanenta" PHP.

Observera dock att på Apache-servermodeller med flera arbetare, upprätthålls anslutningspoolerna PER BARN. Om du ställer in din poolgräns till 10 har du 10 anslutningar per Apache-barn. 20 barn =200 anslutningar.

Ihållande anslutningar kommer också att leda till långvariga problem med dödlägen och andra svårfelsökta problem. Kom ihåg - det finns ingen garanti för att en användares HTTP-förfrågningar kommer att betjänas av SAMMA apache child/mysql-anslutning. Om ett skript dör halvvägs genom en databastransaktion, kommer den transaktionen att INTE rullas tillbaka, eftersom MySQL inte ser HTTP-sidan av saken - allt den ser är att mysql<->apache-anslutningen fortfarande är öppen och antar att allt är bra.

Nästa användare som träffar just den kombinationen av apache/mysql-barn/anslutning kommer nu magiskt att hamna mitt i den transaktionen, utan någon aning om att transaktionen är öppen. I grund och botten är det webbens motsvarighet till en spolad toalett - allt "skräp" från den tidigare användaren finns kvar.

Med icke-beständiga anslutningar är du garanterad att ha en "ren" miljö varje gång du ansluter.



  1. Lägg till en primärnyckel för automatisk ökning till befintlig tabell i Oracle

  2. mysql_fetch_array() förväntar sig att parameter 1 är ett resursproblem

  3. Infoga JSON-data i SQLite-databasen i Android

  4. Syntaxfel på grund av att ett reserverat ord används som tabell- eller kolumnnamn i MySQL