V jakém případě může dojít k chybě DB s hálškou "Too many connections"? Má na tuto hodnotu vliv počet dotazů kladených na DB, i když jsou všechny pod jedním spojením?
Díky
Opravdu uděláš 6000 dotazů během jednoho připojení? Každé zobrazení další stránky přece udělá další connect.
Používáš mysql_close?
1) " Databáze: Too many connections" tohle patří do Databází
2) "V jakém případě může dojít k chybě DB s hálškou "Too many connections"?" pokaždé, když přesáhneš 6000dotazů za hodinu
3) " Má na tuto hodnotu vliv počet dotazů kladených na DB, i když jsou všechny pod jedním spojením?" pokud se stihnou provést během jedné hodiny, tak jo
"Too many connections" , snad kdyz presahne 1800 pripojeni za hodinu ne? a dotazu muze bejt 8000
<HTML>mysql_close() nepomuze, spojeni neni trvale a ukonci se vzdy po dobehnuti scriptu. Problem je ve spatne napsanem scriptu (budto se spojeni nekde cyklilo nebo je priliz mnoho pozadavku)</HTML>
Ve skriptu je začleněna rekurzivní fce, využívající SQL dotazy. Jedná se o klasické vytvoření stromové struktury.
Lze napsat rekurzivní fci přímo v SQL jazyce? Případně, jak asi na to?
Díky
Na stromovou strukturu nemusíš mít rekurzivní funkci.
Zbi: ale může ;)
Xili: "Případně, jak asi na to?"
třeba takto: http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/
Zjednodušeně: jedním SQL dotazem získáš VŠECHNA potřebná data a s těmi potom pracuješ v PHP (nějakej ten for, while a pár logických operátorů)
na co rekurzivní funkce? na trizeni staci jenom znat 'rodice' ... tj text pod ktery dalsi cast patri ...
pr:
forum.class.php :
<?php
class forum {
function forum($dis_array) {
global $vysl,$pocty,$N,$pred;
$pred=$dis_array;
$N=count($pred);
$this->Main();
$this->Count=$N;
$this->Order=$vysl; //pořadí
$this->Indentation=$pocty; //odsazení
}
function zanor($akt){
global $pred,$poc,$por,$pocty,$vysl,$index,$N;
//prochazeni do hloubky
$vysl[$index++]=$akt;
for($i=0;$i<$pocty[$akt];$i++){
$this->zanor($por[$poc[$akt]+$i]);
};
}
function Main() {
global $pred,$poc,$por,$pocty,$vysl,$index,$N;
for($i=0;$i<=$N;$i++)
$pocty[$i]=$por[$i]=0;
for($i=1;$i<=$N;$i++) //zjisteni poctu nasledniku
$pocty[$pred[$i]]++;
$poc[0]=0;
for($i=1;$i<=$N;$i++)
$poc[$i]=$poc[$i-1]+$pocty[$i-1];
for($i=1;$i<=$N;$i++) //ulozeni nasledniku do pole
$por[$poc[$pred[$i]]++]=$i;
$poc[0]=0;
for($i=1;$i<=$N;$i++)
$poc[$i]=$poc[$i-1]+$pocty[$i-1];
$index=0;
$this->zanor(0);
//Zjisteni odsazeni;
$pocty[0]=0;//0-ty prvek je vsude jen jakysi pomocny
//pomocny je zaklad stromu
for ($i=1;$i<=$N;$i++)
$pocty[$i]=$pocty[$pred[$i]]+1;
}
}
?>
+ nejaky ten config.php :)
+ skript do stranky (index.php:)):
require_once('config.php');
require_once('forum.class.php');
/*prihlaseni k databazi*/
$handle = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
$sql = 'SELECT id,parent_id,nadpis,text,jmeno,mail,date,casti FROM forum ORDER BY casti DESC,date;
$query=MySQL_db_Query(DB_DATABASE,$sql);
mysql_close($handle);
/*konec prace s databazi*/
?>
konec ... :-D myslim ze docela jednoduche reseni, ne? a na jeden dotaz! coz je docela cenene :-D