HOERANDL.com Impressum Unterstützung Projekte Kontakt


phpContact

... ist die Weiterentwicklung des B4YFormmailers 2. Es wurden alle Schwächen behoben und viele Funktionen hinzugefügt. Durch die eigens entwickelte Templateengine können individuelle Formulare noch einfacher realisiert werden.
 
header
header
Google
header
emrox_de
Mitglied
Junior Boarder
Beiträge: 6
graphgraph
 
func_show.inc.php Speed Optimierungen - 15/08/2007 13:45 Hier ein paar einfache Geschwindigkeitsoptimierungen (ich bin sich es laesst sich noch weiter Optimieren (Querys weiter zusammenfassen etc))

Alt:
Code:

 $b4yc_max_visits     mysql_result(mysql_query("  SELECT visits      FROM ".$b4yc_db_table."counter_max"),0,0); $b4yc_max_user       mysql_result(mysql_query("  SELECT user        FROM ".$b4yc_db_table."counter_max"),0,0); $b4yc_visits_all     mysql_result(mysql_query("  SELECT visits_all  FROM ".$b4yc_db_table."counter_max"),0,0); $b4yc_page_hits      mysql_result(mysql_query("  SELECT max_hits    FROM ".$b4yc_db_table."counter_max"),0,0);



Neu:
Code:

 $maxstatsel             mysql_query("SELECT visits AS max_visits, user AS max_user, visits_all AS  visits_all, max_hits AS page_hits FROM ".$b4yc_db_table."counter_max"); $maxstatres             mysql_fetch_assoc($maxstatsel); $b4yc_max_visits        $maxstatres['max_visits']; $b4yc_max_user          $maxstatres['max_user']; $b4yc_visits_all        $maxstatres['visits_all']; $b4yc_page_hits         $maxstatres['page_hits'];



-> Nur ein Select fuer alle 4 Abfragen (=schneller)

Alt:
Code:

 $b4yc_user_online    mysql_num_rows(mysql_query("SELECT id          FROM ".$b4yc_db_table."counter_data WHERE time>'".($b4yc_aktuelle_zeit-$b4yc_verfall)."'")); $b4yc_lastday        mysql_num_rows(mysql_query("SELECT id          FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit-86400)."'")); $b4yc_visits         mysql_num_rows(mysql_query("SELECT id          FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit)."'"));



Neu:
Code:

 $b4yc_user_online       mysql_result(mysql_query("SELECT COUNT(id) FROM ".$b4yc_db_table."counter_data WHERE time>'".($b4yc_aktuelle_zeit-$b4yc_verfall)."'"),0);   $b4yc_lastday           mysql_result(mysql_query("SELECT COUNT(id) FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit-86400)."'"),0); $b4yc_visits            mysql_result(mysql_query("SELECT COUNT(id) FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit)."'"),0);



-> COUNT(id) arbeitet schneller als mysql_num_rows. (mysql_num_rows sollte man nur verwenden wenn man sowieso schon ein Ergebnis vorliegen hat welches man anderweitig benutzt)


Alt:
Code:

 $b4yc_query "SELECT iphits FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit-86400)."'"; $b4yc_result mysql_query($b4yc_query) or die (mysql_error());                                                                                       $b4yc_page_lastday=0;                                                                                                                                 while ($b4yc_daten mysql_fetch_array($b4yc_result))                                                                                                 {                                                                                                                                                      $b4yc_page_lastday $b4yc_page_lastday $b4yc_daten[0];                                                                                     }



Neu:
Code:

 $b4yc_page_lastday mysql_result(mysql_query("SELECT SUM(iphits) FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit-86400)."'"),0,0);



-> MySQL ist in jedem Fall schneller als eine Schleife im PHP

Das gleiche fuer die Seitenaufrufe Heute:
Alt:
Code:

 $b4yc_query "SELECT iphits FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit)."'"; $b4yc_result mysql_query($b4yc_query) or die (mysql_error());                                                                                        $b4yc_page_day=0;                                                                                                                                      while ($b4yc_daten mysql_fetch_array($b4yc_result))                                                                                                  {                                                                                                                                                       $b4yc_page_day $b4yc_page_day $b4yc_daten[0];                                                                                              } 



Neu:
Code:

 $b4yc_page_day mysql_result(mysql_query("SELECT SUM(iphits) FROM ".$b4yc_db_table."counter_data WHERE date='".date("Y-m-d"$b4yc_aktuelle_zeit)."'"),0,0);

  | | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
Cougar
Admin
Admin
Beiträge: 732
graph
 
Re:func_show.inc.php Speed Optimierungen - 15/08/2007 15:05 Hallo emrox_de,

du bist echt klasse!

Ich habe mich zwar lange beschäftigt mit der Performance des Counters, nur wie ich sehe gibt es da noch immer vieles zum Optimieren.

VIELEN LIEBEN DANK für die Meldungen!

Liebe Grüße,
Cougar

  | | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
emrox_de
Mitglied
Junior Boarder
Beiträge: 6
graphgraph
 
Re:func_show.inc.php Speed Optimierungen - 17/09/2007 10:26 Ich mache nicht extra noch ein neues Topic auf.

Folgendes habe ich nach einigen Beobachtungen der Datenbankabfragen noch geaender

Tabelle b4yccounter_data Key auf die Spalte date einen Key gelegt, da ueber diese Spalte recht viele Abfragen gemacht werden.
Code:

 ALTER TABLE b4yccounter_data ADD KEY (date);



Hier der vollstaendige Create-String fuer diese Tabelle:
Code:

 CREATE TABLE `b4yccounter_data` (   `idint(11NOT NULL auto_increment,   `ipvarchar(15NOT NULL default '',   `timeint(11NOT NULL,   `datedate NOT NULL default '0000-00-00',   `clientvarchar(255NOT NULL default '',   `hostvarchar(255NOT NULL default '',   `referervarchar(255NOT NULL default '',   `iphitsint(11NOT NULL default '0',   KEY `id` (`id`),   KEY `ip` (`ip`,`time`,`date`),   KEY `time` (`time`),   KEY `date` (`date`) )



Weiterhin habe ich noch einige Aenderungen vorgenommen, welche ich aufgrund der Lizenzbestimmungen des Scriptes (ich darf u.a. keine Code-Veraenderungen vornehmen) nicht veroeffentlichen werde. (Diese Aenderungen entlasten die Datenbank jedoch um einiges, weswegen ich auf diese nicht verzichten kann)
Die durch den Zaehler verursachte Auslastung des Servers hat sich damit auf ein Minimum (geschaetzt mindestens ein Fuenftel) gesenkt.
  | | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
Cougar
Admin
Admin
Beiträge: 732
graph
 
Re:func_show.inc.php Speed Optimierungen - 17/09/2007 18:18 Hallo emrox_de,

Vielen lieben Dank für deine Meldungen!

Ich bin mir sicher das deine Performanceänderungen für viele Benutzer des Counters sehr von Vorteil sind. Daher frage ich dich ob du mir deinen geänderten Counter zuschicken würdest. (Kontaktformular) Wäre echt super von dir!

Dann könnte ich diese "heigh speed" - Version direkt als Download anbieten.

Als kleines Dankeschön erhälst du natürlich die Erlaubnis alle sichtbaren Copyrights zu entfernen, und ich werde (wenn du es möchtest) dich namentlich in der "Readme.htm" bzw. auf der "Informationsseite zum Script" mit Link zu deiner HP nennen.

THX!

Liebe Grüße,
Cougar

  | | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
spacer
header


spacer