Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Geschwindigkeitsproblem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Geschwindigkeitsproblem

    Hallo zusammen,

    Habe hier ein script eines Wochenkalenders wo später Termineinträge aus der Datenbank rein kommen sollen. Es funktioniert aber die Ladegeschwindigkeit ist nicht berauschend hat jemand vielleicht ne Idee wie ich es schnelle r machen kann?

    Getestet mit xampp

    PHP-Code:
    <?php
     
    //require('connect.php'); 
     
     //mysql_connect($dbroot,$dbuser,$dbpass);
     //mysql_select_db('elizit_2015');
     
     //$query = 'SELECT * FROM `termine`';
     //$result = mysql_query($query);

     
     
    if(!isset($_POST['year'])) {$year date('o'time());} else {$year $_POST['year'];}
     if(!isset(
    $_POST['week'])) {$week date('W'time()); $month date('m'time());} else {$week $_POST['week'];}
     
    $day date('j'time());
     
     
    //Kalender erzeugen
     
    $monate_lang = array('Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
     
    $monate_kurz = array('Jan','Feb','M&auml;rz','Apr','Mai','Juni','Juli','Aug','Sep','Okt','Nov','Dez');
     
    $tage_lang = array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
     
    $tage_kurz = array('So','Mo','Di','Mi','Do','Fr','Sa');
     
    function 
    zeigeKWDatum($kw$jahr$i)
    {
       
    $wtage = array(1,0,-1,-2,-3,3,2);
       
    $w     date("w",mktime(0,0,0,1,1,$jahr));
       
    $tage  = ($kw-1)*$wtage[$w];
       
    $tsmktime(0,0,0,1,1+$tage+$i,$jahr);
       
    $datum date("Y-m-d"$ts).'.';
       return 
    $datum;

    for(
    $i 1$i <=7$i++){
       
    $wochentag[] = $i;
       if(
    $i <= 6) {
       
    $wd[$i] = zeigeKWDatum($weekdate("Y"), $i-1);}
       if(
    $i == 7) {
       
    $wd[$i] = zeigeKWDatum($weekdate("Y"), $i-8);}
    }
    $so $wd[7]; $so2 substr($so,8,2).'.'$week_start strtotime($so); $year date('Y',$week_start); $week_anz date('W',$week_start);
    $mo $wd[1]; $mo2 substr($mo,8,2).'.';
    $di $wd[2]; $di2 substr($di,8,2).'.';
    $mi $wd[3]; $mi2 substr($mi,8,2).'.';
    $do $wd[4]; $do2 substr($do,8,2).'.';
    $fr $wd[5]; $fr2 substr($fr,8,2).'.';
    $sa $wd[6]; $sa2 substr($sa,8,2).'.'$week_end strtotime($sa);

    $month_start date('m',$week_start);
    $month_end date('m',$week_end);

    if (
    $month_start == $month_end) {$month_text $monate_lang[$month_end-1];}
    if (
    $month_start $month_end) {$month_text $monate_lang[$month_start-1].' / '.$monate_lang[$month_end-1];}
    if (
    $month_start $month_end) {$month_text $monate_lang[$month_start-1].' '.$year.' / '.$monate_lang[$month_end-1]; $year $year+1;}
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Kalender</title>
    </head>
    <body>
    <table border="1" cellpadding="0" cellspacing="0" width="100%">
    <tr height="50"><td align="left" style="padding-left:10px;"><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><input type="hidden" name="week" value="<?php echo $week-1?>"><input type="submit" name="sub_minus" value="<< zur&uuml;ck"></form></td><td colspan="6" align="center"><?php echo $month_text.' '.$year;?></td><td align="right" style="padding-right:10px;"><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><input type="hidden" name="week" value="<?php echo $week+1?>"><input type="submit" name="sub_plus" value="vor >>"></form></td></tr>
    <tr height="40">
    <td width="9%" rowspan="2" align="center" valign="middle"><?php echo 'Woche: '.$week_anz?></td>
    <td width="13%" align="center">So <?php echo $so2?></td>
    <td width="13%" align="center">Mo <?php echo $mo2?></td>
    <td width="13%" align="center">Di <?php echo $di2?></td>
    <td width="13%" align="center">Mi <?php echo $mi2?></td>
    <td width="13%" align="center">Do <?php echo $do2?></td>
    <td width="13%" align="center">Fr <?php echo $fr2?></td>
    <td align="center">Sa <?php echo $sa2?></td>
    </tr>
    <tr height="200">
    <td></td> Hier kommen dann die Termine aus der Datenbank rein
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    </table>
    </body>
    </html>


  • #2
    Willkommen im Forum.

    Ich sehe in dem Script nichts, was spürbar lange dauern müsste.

    Vielleicht ist irgendwas am Server eigenartig eingestellt. Keine Ahnung.

    Edit: ↓ Joa, trotzdem sicher eine gute Idee.

    Kommentar


    • #3
      Hallo, willkommen im Forum.

      PHP-Code:
      $so $wd[7]; $so2 substr($so,8,2).'.'$week_start strtotime($so); $year date('Y',$week_start); $week_anz date('W',$week_start);
      $mo $wd[1]; $mo2 substr($mo,8,2).'.';
      $di $wd[2]; $di2 substr($di,8,2).'.';
      $mi $wd[3]; $mi2 substr($mi,8,2).'.';
      $do $wd[4]; $do2 substr($do,8,2).'.';
      $fr $wd[5]; $fr2 substr($fr,8,2).'.';
      $sa $wd[6]; $sa2 substr($sa,8,2).'.'$week_end strtotime($sa); 
      Bitte nicht so schreiben, wer soll sowas denn lesen.
      Bitte mal deinen Code ordentlich formatieren und einrücken, in manchen IDEs gibt es da eine Funktionalität für. (Beispiel Netbeans: ALT + SHIFT + F)

      Zur Performance, du könntest microtime() nutzen um mal herauszufinden, an welcher Stelle dein Script so lange braucht.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Browserabhängig

        Also hab mal mit microtime getestet. Die Verarbeitung bis jetzt, ohne Datenbank, beträgt ca. 1.02 Sekunden mit Chrome, Firefox 1.06 Sekunden. Ist wahrscheinscheinlich nur eine subjektive Wahrnehmung.

        Danke für eure Vorschläge

        Vereinfachungen des Quellcodes, mal abgesehen, daß eine Einrückung des Quellcodes dem script nichts tut, sind gern gesehen.

        Danke

        Kommentar


        • #5
          Also hab mal mit microtime getestet. Die Verarbeitung bis jetzt, ohne Datenbank, beträgt ca. 1.02 Sekunden mit Chrome, Firefox 1.06 Sekunden. Ist wahrscheinscheinlich nur eine subjektive Wahrnehmung.
          Die Zeit, die du im Script ermittelst (microtime), hat nichts mit dem Browser zu tun. Das passiert alles serverseitig.

          Wenn ich an den Anfang ein $start = microtime(true); setze und ans Ende ein echo microtime(true) - $start;, dann komme ich auf eine Laufzeit von ca. 10 ms.

          Wenn du da wirklich auf das Hundertfache kommst, könntest du noch automatisiertes Profiling betreiben (via xdebug zum Beispiel) oder das alternativ von Hand machen durch geschicktes Auskommentieren von Code-Abschnitten und weitere microtime-Aufrufe. So bekommst du früher oder später raus, bei was die Zeit verloren geht.

          Wobei das bei dem Code halt echt… übersichtlich ist.

          Ach ja, du solltest zudem natürlich im Zweifel immer Error-Reporting aktivieren.

          PHP-Code:
          error_reporting(-1); // Alle Bits auf "an"
          ini_set('display_errors'1); 

          Kommentar


          • #6
            Zitat von elizit Beitrag anzeigen
            Also hab mal mit microtime getestet. Die Verarbeitung bis jetzt, ohne Datenbank, beträgt ca. 1.02 Sekunden mit Chrome, Firefox 1.06 Sekunden. Ist wahrscheinscheinlich nur eine subjektive Wahrnehmung.
            Änder das Script, das es auf der Kommandozeile läuft und miss nochmal nach. Das dieses bischen Code 1 Sekunde dauern soll, halte ich für ein Gerücht (auf nem 386er vielleicht).
            Da ist nur eine Schleife drin, die nicht wirklich viel macht...
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Also liegt an xampp localhost, Auf dem Webserver sind es nur 7ms. Warum fragt sich, aber danke noch mal an alle für eure Tips.

              Kommentar

              Lädt...
              X