WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   City Network förbjuder mysql_pconnect (https://www.wn.se/forum/showthread.php?t=1046836)

robincox 2011-03-01 10:03

Citat:

Ursprungligen postat av eliasson (Inlägg 20395291)
Finns det någon anledning till att du använder mysql_pconnect (persistant) framför mysql_connect?

Jag tycker att City Network har gjort rätt beslut, men de bör informera alla sina kunder i god tid innan!

De har säkert informerat alla kunder. Har ingen aning eftersom jag inte är kund där. Däremot har ju jag en kund till mig som ligger där. Detta innebär att min kund som inte har någon aning om vad pconnect är har fått infon och troligtvis inte brytt sig om den.

För mig som inte fått någon info så var det mycket märkligt att sidan helt plötsligt låg nere. Så jag ringde supporten som gav mig svaret att jag troligtvis hade något fel i mitt uppkopplings anrop. Till slut så fick en av deras tekniker kolla på min kod och då upptäckte han pconnect.

robincox 2011-03-01 10:17

Citat:

Ursprungligen postat av Clarence (Inlägg 20395290)
Ja, så länge du inte stänger anslutningen är den öppen under hela scriptets exekveringstid. Skillnaden mot pconnect ligger först efter det.

Tack för hjälpen. Det fungerade med att byta ut pconnect mot connect på ett ställe. Behöver jag inte stänga uppkopplingen till databasen vid något tillfälle då?

eliasson 2011-03-01 10:37

Citat:

Ursprungligen postat av robincox (Inlägg 20395315)
Tack för hjälpen. Det fungerade med att byta ut pconnect mot connect på ett ställe. Behöver jag inte stänga uppkopplingen till databasen vid något tillfälle då?

Som tidigare påpekat sköter PHP det automatiskt.

Citat:

Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
Ref: http://php.net/manual/en/function.mysql-close.php

robincox 2011-03-01 12:49

Citat:

Ursprungligen postat av eliasson (Inlägg 20395327)
Som tidigare påpekat sköter PHP det automatiskt.


Ref: http://php.net/manual/en/function.mysql-close.php

Tackar allihopa, ni har räddat min dag :)

danjel 2011-03-01 15:42

Om man vill "simulera" persistenta connections och undvika flera connections per request så finns det ett sätt via kod.
T.e.x kanske man kör ett antal frågor på en sida men dessa frågor ligger i olika include filer, och man för att behålla modularitet i koden vill göra en connection i varje fil,
då bör man hantera så att kopplingen återanvänds..

Ungefär så (osäker om syntax är helt korrekt) :

function db_connect()
{
static $cn;
if($cn == null){
$cn = mysql_connect("localhost","root","");
}
return $cn;

}

En mysql_connect sker alltså endast första gången funktionen anropas men den returnerar alltid en connection.
(Principen kallas "Singleton pattern" i en objektorienterat kod)

Jine 2011-03-02 03:34

Nja, nu måste jag nog skicka dig att läsa på lite.
Du har missuppfattat vad funktionen gör.

Din kod är dock relativt korrekt, men är totalt onödig och värdelös :)

http://se2.php.net/manual/en/functio...l-pconnect.php

danjel 2011-03-02 10:06

Alltså jag menade inte simulera men "simulera" : ) i bemärkelsen att man vill undvika för många connections och stort minnesutnyttjande vid anslutning till databas.

Koden ovan är inte värdelös , den gör inte flera anrop till "mysql_connect".
Dock så kanske prestandavinsten är liten i detta fall, jag hade för mig att mysql_connect skapar ny connection link för varje anrop, men i PHP versioner nyare än 4.2 är så inte fallet:

"If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned."

(Det är viktigare med ett Singleton eller en global variabel vad gäller PDO, då man skapar ett nytt objekt och vill spara den instansen under hela scriptets livslängd )


Alla tider är GMT +2. Klockan är nu 16:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson