Jump to content
php.lv forumi

Pieprasiijumi vienaa reizee


Recommended Posts

cik buutu ieteicam pieprasiijumus veikt ar mysql vienaa lapas ielaades laikaa. cik vareetu buut optimaalais, lai lapa aatri straadaatu pie lielas slodzes.

 

 

a kaa ir labaak, kad veido konekciju:

indexa saakumaa:

mysql_pconnect("localhost","local","local");
mysql_select_db("manbaaze");
mysql_query("SELECT * FROM ......")
mysql_query("SELECT * FROM ......")
.....

 

vai

$conID = mysql_pconnect("localhost","local","local");
mysql_query("SELECT * FROM ......",$conID);
...

 

jautaajums taaC:

kaa labaak konekteet pie mysql? lapas saakumaa piekonekteet un beigaas atsleegties, vai pie katra pieprasiijum konekteet?

 

un veel jautaajums: kas ira labaak: mysql_query vai mysql_db_query

Link to post
Share on other sites
cik buutu ieteicam pieprasiijumus veikt ar mysql vienaa lapas ielaades laikaa. cik vareetu buut optimaalais, lai lapa aatri straadaatu pie lielas slodzes.
Tas nav vienoziimiigi atbildams. Var buut 100 kveriji kas straadaa aatraak par vienu pashu. Noziime ir tam ko kverijs dara/izpilda, vai tas ir pareizs / optimaals un vai logjisks no datubazes uzbuves viedoklja.

 

mysql_pconnect() vietaa standarta variantaa labaak ir lietot mysql_connect proti ne-persistant konekcijas.

Iznjeemums vareetu buut ljoti liels vienmeeriigs paraleelu pieprasiijumu skaits, tachu tad arii shis tas jaapamaina no pasha MySQL puses (galvenokaart jaasamazina wait timeout settings - lai MySQLs netureetu pusdienu valjaa neaktiivas konekcijas).

 

jautaajums taaC:

kaa labaak konekteet pie mysql? lapas saakumaa piekonekteet un beigaas atsleegties, vai pie katra pieprasiijum konekteet?

Konekteeties vajag tad kad tas ir nepiecieshams.. Proti ja tev lapaa neizpildaas neviens SQL kverijs tad teiksim lapas headerii iekljaut mysql konekciju buutu nejeedziigi.

Bet taa parasti konekciju veido skripta saakumaa (iznjemot varbuut OOPiskus variantus kur db handlerus piestartee veelaak) jo parasti tas vai izdosies vai neizdosies piesleegties ir visbuutiskaakais - ja neizdodas tad idejiski lapu taalaak laadeet nav jeegas.

Otraamkaartaam pie ottreizeeja konekta pie MySQL, php censhas atrast vai jau nav shaada konekcija izveidota liidz ar to pie katra pieprasiijuma nav pamata konektam :)

 

un veel jautaajums: kas ira labaak: mysql_query vai mysql_db_query

Note: This function has been deprecated since PHP 4.0.6. Do not use this function. Use mysql_select_db() and mysql_query() instead.

 

mysql_query ir krietni vien aatraaka jo mysql_db_query pie katra kverija ieprieksh veel izsauc mysql_select_db, kuru mysql_query gadijumaa nepiecieshams izsaukt tikai vienu reizi.

Link to post
Share on other sites

queriju skaits ir atkarīgs no tā cik tabulas tu izmantosi.

piemēram ja index lapā tev no datubāzes ņemsies ziņas, banneri, linki tad arī tev būs 3 pieprasījumi. mazāk jau neuztaisīsi :D

galvenais netaisīt miljons lieku queriju. kā jau minēju - MYSQL pieprasījumi ir ļoti fleksibli tādēļ nevajadzētu būt problēmām taisīt advancētu vienu pieprasījumu nevis vairākus līdzīgus pieprasījumus.

Link to post
Share on other sites

viena tante teica....

dēļ mysql_pconnect parādās errori: too many connections; serveri gāž nost.

vienmēr un visur iesaka izmantot mysql_connect. tikai un vienīgi.

cik saprotu pconnect never ciet konekcijas (persistant connections), ko gan dara connect. līdz ar to atbrīvojas connection skaits uz servera (ar mysql_connect) + tmp iztīrās (ne?) . līdz ar to i tev labi i serverim labi.

Link to post
Share on other sites

man struktuura lapai shaada:

<?
session_start();
mysql_pconnect($host,$user,$pass);
mysql_select_db($db);
.....
....
?>
<html>
<body>
Te lapas uzbuuve un pieprasiijumi
</body>
</html>
<? mysql_close(); ?>

manupraat konekcija nepaliek atveerta ....

Link to post
Share on other sites
manupraat konekcija nepaliek atveerta ....
Der lasiit manuaali

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).

 

Rakstiju standarta variantaa labaak taapeec ka, vieniigi zinot ko tu dari un tas ir tavs MySQL serveris, preteeji pienaaks briidis kad tu aizsitiisi visas tev atveeleetaas konekcijas (hostinga piegaadaataaji parasti taas limitee).

 

 

dēļ mysql_pconnect parādās errori: too many connections; serveri gāž nost.
Tas negaazh nost serveri, bet vienkaarshi ir korekta servera darbiiba kad klients/lietotaajs ir izsmeelis visas maksimaali atljautaas konekcijas (lai arii teoreetiski PHP buutu jaameklee esoshas briivas konekcijas biezhi vien gadaas ka vinsh atver jaunu). Protams no weblapas viedoklja pilniigs kirdik :)

 

Ne velti pie funkcijas dokumentacijas ir Warnings

Using persistent connections can require a bit of tuning of your Apache and MySQL configurations to ensure that you do not exceed the number of connections allowed by MySQL.

Link to post
Share on other sites

varbuut ir ieteikumi kaa aizveert konekciju, kas ir atveerta ar mysql_pconnect ?

 

piemeeram kaa draugiem.lv

vinju gadiijumaa ko ir labaak izmantot? mysql_pconnect vai mysql_connect?

Link to post
Share on other sites

/me atvēr ar mysql_connect, bet skripta beigās beidz nost close(), jo itkā

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.

No php sourcēm izskatās, ka pointeris uz konekciju varētu tikt nodots starp dažādām lapas instancēm (however, to nevar nodot caur, piem. sessiju).

Resp, es ceru ka php dara tā:

ja tiek izaukta mysql_connect f-ja tiek ā) php "iekšienē" saglabāti parami, ar kuriem tā tika atvērta=>pointeris uz atvērto konekciju

ja otrreiz tiek pieprasīts tas pats, php no sākuma paskatās sev iekšā - vai nav atvērts pointeris, un ja ir - "pieslēdz" nākamo klientu tam.

Resp. loģika līdzīga include/require_once pārbaudei.

Connectionu skaits mazāks (vai pat tikai 1), bet lielāks trafiks "caur vienu trubu", mazliet lēnāka apkalpošana dēļ tā, kā uz vienas konekcijas sēž vairāki klienti. Resp. var paņemt winmysqladminu vai kādu citu tūli un sekot līdzi cik procesu spawnējas, ja tiek pēc šādas loģikas ieslēgtas vairākas laas instances (un refrešotas, refrešotas) :)

Teiksim tā - pie standarta 100 max connections 500 unikālos letotājus ar vairāk nekā 30000 hītu dienā turēja. Varbūt vienkārši veicās, varbūt mazāks taimauts bija un liekās konekcijas vienkārši tika veiksmīgi killotas.

Link to post
Share on other sites
×
×
  • Create New...