Kom ihåg mig?
Home Menu

Menu


City Network förbjuder mysql_pconnect

 
 
Ämnesverktyg Visningsalternativ
Oläst 2011-03-01, 15:42 #1
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
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)

Senast redigerad av danjel den 2011-03-01 klockan 15:57
danjel är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-02, 03:34 #2
Jines avatar
Jine Jine är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Feb 2005
Inlägg: 1 032
Jine Jine är inte uppkopplad
Har WN som tidsfördriv
Jines avatar
 
Reg.datum: Feb 2005
Inlägg: 1 032
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
Jine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-02, 10:06 #3
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
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 )
danjel är inte uppkopplad   Svara med citatSvara med citat
Svara

Taggar
city network, mysql, php, webbhotell


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 06:10.

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