[PHP] Meerdere async databaseconnecties

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheGuest
  • Registratie: Augustus 2003
  • Laatst online: 29-01-2024

TheGuest

De enige echte

Topicstarter
Hallo!

Ik maak verbinding met mijn database als volgt:

PHP:
1
$oDB = new mysqli($DB['host'],$DB['gebruikersnaam'],$DB['wachtwoord'], $DB['naam']);


Mijn host staat maar een handvol gelijktijdige connecties toe en daarom heb ik een probleem wanneer ik bijvoorbeeld gebruik maak van een dynamisch plaatjes script welke elke keer een databaseverbinding aan wilt maken.

Wat is hiervoor een goede oplossing? (Ik wil de verbinding niet persistent maken).

Acties:
  • 0 Henk 'm!

  • analog_
  • Registratie: Januari 2004
  • Niet online
Singleton Pattern toepassen.

Acties:
  • 0 Henk 'm!

  • Observer
  • Registratie: April 2001
  • Laatst online: 16:24
Singletons helpen niet als je meerdere HTTP-requests tegelijkertijd moet afhandelen, de scope van een singleton is alleen het proces dat 1 request afhandeld.

Een persistent connection werkt waarschijnlijk wel, al zie ik niet zo gauw in de documentatie van MySQLi hoe je een persistent connectie aanmaakt. Bij de 'oude' Mysql client is het de functie mysql_pconnect()

There are 10 kinds of people in the world: those that understand binary and those that don't


Acties:
  • 0 Henk 'm!

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 17-06 07:31

Swaptor

Java Apprentice

TheGuest schreef op vrijdag 17 oktober 2008 @ 02:10:
Wat is hiervoor een goede oplossing? (Ik wil de verbinding niet persistent maken).
Observer schreef op vrijdag 17 oktober 2008 @ 09:40:
Een persistent connection werkt waarschijnlijk wel, al zie ik niet zo gauw in de documentatie van MySQLi hoe je een persistent connectie aanmaakt. Bij de 'oude' Mysql client is het de functie mysql_pconnect()
>:)

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Plaatjes cachen op je webserver? 1x per X minuten opnieuw aanmaken en in de tussentijd heb je geen database connectie nodig voor het opbouwen van die plaatjes.

Acties:
  • 0 Henk 'm!

  • TheGuest
  • Registratie: Augustus 2003
  • Laatst online: 29-01-2024

TheGuest

De enige echte

Topicstarter
En het databaseobject in een sessie plaatsen? Of is dit 'vies'?

Plaatjes cachen is een goed idee trouwens.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

TheGuest schreef op vrijdag 17 oktober 2008 @ 12:19:
En het databaseobject in een sessie plaatsen? Of is dit 'vies'?
Je kan je connectie met de database niet in je sessie zetten aangezien die niet geserialized kan worden :)

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 09:34
Erkens schreef op vrijdag 17 oktober 2008 @ 12:34:
[...]

Je kan je connectie met de database niet in je sessie zetten aangezien die niet geserialized kan worden :)
En zelfs al kon je dat wel sluit de webserver 'm alsnog af zodra het request afgelopen is dus heb je enkel een referentie naar een gesloten verbinding, gaat je niet veel helpen.

Als je DB connecties wilt hergebruiken tussen verschillende threads (zonder van de connection pool van je webserver gebruik te maken) zul je ze wel persistent moeten maken, daar ontkom je simpelweg niet aan. Dat of je gaat inderdaad cachen :)

offtopic:
Is trouwens wel weer een mooi voorbeeld waarom plaatjes in je DB zetten doorgaans een slecht plan is :+

[ Voor 11% gewijzigd door FragFrog op 17-10-2008 15:39 ]

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
FragFrog schreef op vrijdag 17 oktober 2008 @ 15:38:
[...]

En zelfs al kon je dat wel sluit de webserver 'm alsnog af zodra het request afgelopen is dus heb je enkel een referentie naar een gesloten verbinding, gaat je niet veel helpen.
Gelukkig maar. Stel je hebt een sessie time out van een half uur. Er komen in dat half uur 100 hits van verschillende clients, of van een botje dat niet aan cookies doet, dan heb je dus 100 sessies die allemaal een half uur lang een connectie zouden open houden
offtopic:
Is trouwens wel weer een mooi voorbeeld waarom plaatjes in je DB zetten doorgaans een slecht plan is :+
Als het echt dynamische plaatjes zijn (bv grafieken op basis van gegevens in de database) dan heb je een database connectie nodig. Maar zelfs dan is het beter om die plaatjes kort te cachen.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

FragFrog schreef op vrijdag 17 oktober 2008 @ 15:38:
offtopic:
Is trouwens wel weer een mooi voorbeeld waarom plaatjes in je DB zetten doorgaans een slecht plan is :+
Eerder een betere server kopen ;)

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 09:34
Erkens schreef op vrijdag 17 oktober 2008 @ 17:00:
[...]

Eerder een betere server kopen ;)
Daar wordt het aantal simultane DB connecties niet minder van hoor :P

Oke, vooruit, van een goed ingestelde webserver met een normale connection pool wel, maar daar heb je met een shared hosting accountje doorgaans niet zo gek veel over te zeggen :+

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

FragFrog schreef op vrijdag 17 oktober 2008 @ 17:15:
[...]

Daar wordt het aantal simultane DB connecties niet minder van hoor :P

Oke, vooruit, van een goed ingestelde webserver met een normale connection pool wel, maar daar heb je met een shared hosting accountje doorgaans niet zo gek veel over te zeggen :+
offtopic:
Ik doelde met mijn opmerking dus ook op die configuratie ;)
Pagina: 1