[PHP/MySql] Lost connection to MySQL server during query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo mensen,

Ik heb een redelijk groot PHP script, hierin worden ongeveer 27 stored procedurs aangeroepen. En nee, of dit minder kan gaat het nu even niet over :9
Normaal opende ik voor elke stored procedure die ik aanriep een connectie dmv:
PHP:
1
2
$link = mysqli_connect($config['mysql_server'],$config['mysql_user'],$config['mysql_password'],$config['mysql_database'])
or die ("Error connecting:<br>".mysqli_error($link));


Dan voerde ik mijn query uit:
PHP:
1
$data = mysqli_query($link,$query) or die("Error:<br>".mysqli_connect_error($link));


En sloot ik de connectie:
PHP:
1
mysqli_close($link);


Door de verbinding elke keer te openen & te sluiten gaat daar aardig wat tijd in zitten. Die tijd wil ik terugwinnen nu door de connectie voor de hele lengte van mijn script open te laten en aan het eind te sluiten.
Soms is de connectie in een functie nodig, en op deze manier had ik het in gedachten.
Aan het begin van de pagina:
PHP:
1
2
$link = mysqli_connect($config['mysql_server'],$config['mysql_user'],$config['mysql_password'],$config['mysql_database'])
or die ("Error connecting:<br>".mysqli_error($link));


In de functie's waar een query moet worden uitgevoerd:
PHP:
1
2
global $link;
mysqli_query($link,$query) or die("Error(".__LINE__."):<br>".mysqli_error($link));


en aan het eind van de pagina waar mijn script eindigt:
PHP:
1
mysqli_close($link);


Maar nu krijg ik 9 van de 10 keer de volgende fout:
code:
1
Lost connection to MySQL server during query


Mijn verbinding blijft dus niet open, heb al gezocht in de mysql handleiding, en daar staat iets over het te lang open laten van de verbinding, de uitvoer van het hele script duurt normaal 0,5 seconde en daar kan het dus niet aan liggen. Wie help mij uit de brand?

MySql: 5.1.19
PHP: 5.1.2

[ Voor 7% gewijzigd door Verwijderd op 27-03-2006 13:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
En sinds het moment dat ik hiermee bezig ben, staat dit veel in de logs:
code:
1
[Warning] Aborted connection 3043 to db: 'database' user: 'usr' host: 'server' (Got an error reading communication packets)

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
waarom close je de connectie? je opent toch geen andere?
wanneer je php file klaar is met parsen, word dit automatisch voor je gedaan nl.

probeer het eens zonder

edit:
trouwens, het is:
mysql_query($query, $link);
niet
mysql_query($link, $query);


edit2:
ik zie nu dat je mysqli_ iets gebruikt..
waarom in godesnaam? ah stored procedures

[ Voor 43% gewijzigd door BasieP op 27-03-2006 13:43 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Reeds geprobeert, zelfde probleem ;) Dat was t eerste wat ik probeerde, heb ook al geprobeerd dmv mysqli_real_connect te connecten en dat leverde het zelfde probleem

Acties:
  • 0 Henk 'm!

  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Deze link al gezien?

Vlinders moet je volgen, niet vangen...


Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Het enige wat ik heirover kan zeggen is dat phpmyadmin hier hetzelfde probleem geeft wanneer je 'EXPLAIN' gebruikt. Het lijkt door de mysqli module te komen van PHP.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nog maar 20x :P Elk google resultaat wijst naar die link. Wat mij wel op valt is dat het elke keer bij dezelfde regel optreed

Acties:
  • 0 Henk 'm!

  • x-force
  • Registratie: Maart 2001
  • Laatst online: 05-01-2024
Misschien kun je wat beter je db-connectie hergebruiken dmv het singleton patroon: [rml][ OO] Implementatie Singleton pattern[/rml]

Zo blijft er slechts 1 connectie bestaan.


edit:

ah, ik zie dat het probleem ergens anders mee te maken heeft.

[ Voor 18% gewijzigd door x-force op 27-03-2006 13:56 ]

VangenopBetaalwater.nl Het platform om ervaringen over betaalwater in Frankrijk te delen met andere karpervissers zodat iedereen kan vangen op betaalwater!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat lijkt mij een overkill oplossing, op mijn manier hoort er ook 1 connectie te blijven bestaan ;) Alleen mysql moet perse vaag doen met die aborted connection

[ Voor 24% gewijzigd door Verwijderd op 27-03-2006 13:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem lijkt veroorzaakt te worden door een stored procedure die word aangeroepen, en die geen resultaat terug geeft. Af en toe werkt alles, maar meestal niet...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem treed zich op met mysql 5.1.18 & 5.1.19, en het gaat trouwens om een lokale testserver, dus ik connect naar localhost.

Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Kan je hier wat mee?

Even kort:

Je moet mysqli_multi_query() gebruiken omdat PHP 2 resultsets verwacht, 1) je SELECT, 2) de SP. Terwijl de 2e vaak alleen 'OK' of 'ERR' is. Het staat niet in de documentatie, maar het leek de php-devvers logisch genoeg.

[ Voor 65% gewijzigd door GX op 27-03-2006 15:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GX schreef op maandag 27 maart 2006 @ 15:30:
Kan je hier wat mee?

Even kort:

Je moet mysqli_multi_query() gebruiken omdat PHP 2 resultsets verwacht, 1) je SELECT, 2) de SP. Terwijl de 2e vaak alleen 'OK' of 'ERR' is. Het staat niet in de documentatie, maar het leek de php-devvers logisch genoeg.
Echt veel wijzer word ik dr niet uit, ben er nu mee bezig, maar kan geen werkend voorbeeld vinden waarvan ik het dus af kan leiden...

Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Verwijderd schreef op maandag 27 maart 2006 @ 16:03:
[...]


Echt veel wijzer word ik dr niet uit, ben er nu mee bezig, maar kan geen werkend voorbeeld vinden waarvan ik het dus af kan leiden...
Ik vermoed dat het hierop moet lijken:

PHP:
1
2
3
mysqli_multi_query($link, $query);
mysqli_next_result($link);
$result = mysqli_store_result($link);


Wilde gok, ben niet in de gelegenheid te testen :)

Acties:
  • 0 Henk 'm!

  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Heb je hier al gekeken?

I'm not a complete idiot - several parts are missing.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GX schreef op maandag 27 maart 2006 @ 16:07:
[...]


Ik vermoed dat het hierop moet lijken:

PHP:
1
2
3
mysqli_multi_query($link, $query);
mysqli_next_result($link);
$result = mysqli_store_result($link);


Wilde gok, ben niet in de gelegenheid te testen :)
Heb het idee al een beetje laten varen en ga mij eerst focussen op een andere manier van snelheidswinst, het probleem is dat je soms (bij een select query die een resultaat heeft) 2 result sets terug krijgt, en soms maar 1 (bij insert/delete/update/select waar geen resultaat is) resultset. Het laden van mijn website duur op het moment 0.6 sec's, wil dit minimaal halveren dus dit zal zeer binnenkort wel weer onder handen genomen worden.
Lang leve sourcesafe, heb inmiddels al mijn werk van vandaag ongedaan kunnen maken... experiment op experiment op experiment.....
Nee, }:O
Tuurlijk wel, dat is 1 van de eerste plekken waar ik ben gaan kijken, heb bijna alle mysqli methodes wel gezien vandaag

[ Voor 17% gewijzigd door Verwijderd op 27-03-2006 17:23 ]

Pagina: 1