Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
page load time & number queries
Last Updated: Oct 01 2010 09:24, Started by
puya4ever
, Sep 16 2010 23:21
·
0
#1
Posted 16 September 2010 - 23:21
Buna seara. Cum pot face sa numar toate query-urile necesare incarcarii unei pagini, dar load time-ul acestuia?
Cum are softpedia in footer: 0.1918 sec 1.94 4 queries . edit: am eu doua solutii, insa nu stiu daca asa se si face . 1. in loc de mysql_query, creez eu o functie care incrementeaza o valoare 2. de fiecare data cand scriu mysql_query, imediat dupa, sa apelez o functie care la fel, incrementeaza acea valoare . E corect? Edited by puya4ever, 16 September 2010 - 23:23. |
#2
Posted 17 September 2010 - 00:57
#3
Posted 17 September 2010 - 09:34
Dacă vrei să faci code profiling, o poţi face cu xdebug.
Numărarea query-urilor (metoda corectă e 1, numai că vei avea nevoie de o clasă dacă vrei să o faci corect, fără variabile globale) doar de dragul de a o face nu e tot. Fluxul de execuţie trebuie analizat în lungul şi-n latul întregului proiect, nu numai operaţiile DB. |
#4
Posted 17 September 2010 - 16:41
da, pana acum imi creeam o clasa pe, basic pe care o apelam asa: $mysql->select / $mysql->insert, dar am renuntat pentru ca nu vedeam rostul unei astfel de clase doar de dragul de a schimba mysql_query cu $mysq->select sau ->insert, pentru ca nu am mai avut nevoie de alte operatii in interiorul functiei . M-am lamurit. Multumesc.
|
#5
Posted 26 September 2010 - 01:21
Revin sa scriu ca nu-mi iese.
Am clasa: class mysql{ public $i; //number the queries needed to load the page function query($sql){ $query = mysql_query($sql); $this->i++; //echo $this->i; return $query; if(!$query){ die('Error : ' . mysql_error()); } } function numqueries(){ return $this->i; } } Functioneaza, dar nu asa cum trebuie. Imi numara doar query-urile executate in aceeasi pagina, nu si pe cele executate si in alt fisier. De ce ? Edited by puya4ever, 26 September 2010 - 01:27. |
#6
Posted 26 September 2010 - 11:02
Teoretic ar trebui să ai o singură instanță a clasei mysql în toată execuția, probabil globală. Sau să folosești pattern-ul singleton/factory.
Punct de pornire: http://php.net/manua...oop5.static.php |
#7
Posted 26 September 2010 - 13:05
Nu inteleg o chestie . Daca declar o noua instanta de exemplu in index.php ($db = new mysql; ), index.php fiind primul fisier de executie in care este inclusa clasa mysql . De ce nu pot accesa $db->query si in index.php -> controller.php -> template/index.php . Imi spune
Call to a member function numqueries() on a non-object in ... Banuiesc ca deaia nu imi merge nici mie metoda cu numqueries, pentru ca eu creez o noua instanta de mai multe ori, astfel, $i-ul care ar trebui sa fie incrementat o ia de la capat pentru fiecare instanta ... Imi puteti explica de ce se intampla asa? (partea cu folosirea $db->query intr-un fisier, iar instantierea $db = new mysql; undeva in "primele fisiere executate de framework" ) ; Multumesc. edit: multumesc sergiu, am citit acel capitol si am modificat valoarea $i ca fiind statica. Edited by puya4ever, 26 September 2010 - 13:06. |
#8
Posted 26 September 2010 - 13:12
Nu creezi o instanta de mai multe ori. Nu exista asa ceva. Creezi mai multe instante ale unei clase.
Cat despre $foo->numqueries(), iti spune ca $foo nu e un obiect (o instanta). Clasa mysql trebuie sa fie un singleton. Ma rog, exista alte variante mai bune, dar merge si asa, pentru aplicatii simple cu o singura baza de date. |
#9
Posted 26 September 2010 - 13:27
Multumesc pentru raspuns . Cam asta ar fi singleton pattern, dupa o cautare pe google.
class Singleton { private static $_instance; public static function getInstance() { if (!(self::$_instance instanceof self)) { self::$_instance = new self(); } return self::$_instance; } // Do not allow an explicit call of the constructor: $v = new Singleton(); final private function __construct() { } // Do not allow the clone operation: $x = clone $v; final private function __clone() { } } $instance = Singleton::getInstance(); Nu prea stiu cum sa il folosesc. Imi poti da un exemplu te rog? |
#11
Posted 26 September 2010 - 13:50
$db = Singleton::getInstance();
echo $db->numqueries(); . Primesc eroare . De ce? Cum se face apelarea unei metode? Call to undefined method Singleton::numqueries() in |
#12
Posted 26 September 2010 - 15:06
Pai clasa ta Singleton are o metoda numita "numqueries"?
Invata si tu sa intelegi mesajele de eroare, ca-ti spun ce nu e in ordine. Nu trebuie "decat" sa stii terminologia. Asta predic p-aci pe forum de ani intregi: terminologie, terminologie, si iar terminologie. |
#13
Posted 26 September 2010 - 15:41
Am inteles. Atunci trebuie sa introduc pattern-ul singleton in clasa mea mysql ?
|
#14
Posted 26 September 2010 - 16:43
Asta inseamna "design pattern", da.
Iti descrie tehnica. Tu o incorporezi in clasele tale. |
#16
Posted 29 September 2010 - 00:19
Am reusit sa fac clasa mysql sa mearga, si imi numara si query-urile din alte parti .
class mysql{ private static $instance; // A private constructor; prevents direct creation of object private function __construct() { //echo 'I am constructed'; } // The singleton method public static function singleton() { if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } public static $i; //number the queries needed to load the page function query($sql){ $query = mysql_query($sql); $this->i++; //echo $this->i; return $query; if(!$query){ die('Error : ' . mysql_error()); } } function numqueries(){ return $this->i; } } |
#17
Posted 29 September 2010 - 08:37
$query = mysql_query($sql); $this->i++; //echo $this->i; return $query; if(!$query){ die('Error : ' . mysql_error()); }Si uite asa scufita l-a mancat pe lup... Vezi tu, e o chestie cu OOP-ul asta, devin sceptic cand vine un incepator si se apuca de OOP fara sa studieze o carte inainte si fara sa stapaneasca logica din programarea procedurala, doar pentru ca "it's the cool new thing". Doh. |
#18
Posted 29 September 2010 - 14:07
if(!$query){ die('Error : ' . mysql_error()); } Aici este greseala ? Cum ar trebui sa arate acea bucata de cod? Edited by puya4ever, 29 September 2010 - 14:08. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users