Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP4 vs PHP5

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] PHP4 vs PHP5.

    [Erledigt] PHP4 vs PHP5

    Hallo zusammen,

    ich habe eine Webanwendung unter PHP4 geschrieben. Leider hat sich der
    ohne es zu wissen für eine Provider entschieden, der auf seinem Server PHP5 laufen hat.

    Problem: Die Seite läuft zwar, aber immer wenn ein bisl mehr PHP benötigt wird um Daten zu verarbeiten und diese darzstellen kommt es zu Wartezeiten von bi zu 30 secs, auf meinem server der PHP4 hat läuft die Sache wie am Schnürchen....

    Kann man da irgendwas machen? Kann das +berhaupt an der PHP- Version liegen?

    Ich bin für jede Hilfestellung dankbar

    Gruß,

    Lukin[/i]

  • axo
    antwortet
    ... und bitte nie SELECTS innerhalb von while-schleifen.

    JOIN hilft.

    Einen Kommentar schreiben:


  • Basti
    antwortet
    Sieht übrigends so aus, als ob du an deinen Abfragen auch Einiges verbessern könntest. Habs allerdings nur mal so überflogenund bin nicht sonderlich fit in Sachen SQL. Es scheint ja z.B. zu jedem tbl_kontingente.K_FIndex nur einen Flug zu geben. Du berarbeitest das Ergebnis dieser Abfrage zwar in einer Schleife, weist aber in jedem Durchlauf den jeweiligen Datenatz den selben Variablen zu. In dem Fall wäre ein LIMIT angebracht. Allerdings kannst du diese Abfrage auch direkt in SQL mit der ersten Abfrage (Kontingente) verknüpfen. Die zweite lässt sich, denke ich, auch damit verknüpfen, weiß ich aber nicht. Und den Flughafen kannst du auch direkt in der Abfrage nach dem Flug mit ermitteln, soweit ich das sehe.

    Poste doch einfach mal ein Dump mit ein paar Datensätzen, deinem genauen Ziel und deinem bisherigen Code ins MySQL-Forum. Da kannst du ziemlich sicher einiges rausholen.

    Aber, wie gesagt, ich bin kein SQL-Freak - leider.

    Basti

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    np immer gern

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    ok, vielen Dank für die ausführliche Hilfe,

    hab nun erstmal genug stoff, den ich mir anschauen muss

    grüße

    Lukin

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    @Lukin

    klare antwort: nein
    da es geschmackssache ist ob html in php oder php in html
    jemand der aus der programmierer ecke bsp.: C kommt
    wird sicher lieber html in php schreiben
    andere bevorzugen html files zu schreiben und mit phpcode zu erweitern
    ich pers. mag es lieber php und html zu trennen ( templates )

    - leichte wartbarkeit von code
    - programmstabilität
    - einfache erweiterung von html (tpl)
    - leichtes/einfaches ändern von design usw.

    eventuell wäre eine überlegung mit heredocs zu arbeiten interessant ( oder gar eine template engine einzusetzten )

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    naja bei interesse an zend

    http://swbulletin.no-ip.org/z_pdf/

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hm, Wäre es sinnvoll alles was ich an html ausecho, andres zu schreiben:

    zB:

    <?
    for($count=0;$count<10;$count++){
    ?>
    <td><?echo $count ?></td>

    <? } ?>

    anstatt

    <?
    for($count=0;$count<10;$count++){
    echo "<td>".$count."</td>";

    } ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    sinnvoller einsatz von klammern und quotes sollte auch etwas helfen

    bsp.:
    du schreibst schon in double quotes dann ist es auch besser deren vorteil zu nutzen

    echo "...'".$ar_f[$count][fdatum]."'

    echo "...'{$ar_f[$count]['fdatum']}'

    und bedenke das alles in double quotes von php geparst wird da sollte dann eine überlegungung von sinnvollem einsatz von single quotes auch ein paar vorteile bringen

    mfg

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Dieses Zend kenne ich nicht, muss wahrscheinlich auf dem server installiert sein?

    Habt ihr eventuelle ne Seite wo was drüber lesen kann?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hola,

    wie gesagt, die Konstanten waren es tatsächlich.

    Vielen Dank an Euch!!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich habe gerade mal die benannten Array-Elemente in Annführungszeichen gesetz und sie da, es läuft wesentlich schneller!!!

    $ar_f[$count]['fnr']


    ?>[/php]
    ansatt

    PHP-Code:
    <?php
    $ar_f
    [$count][fnr]
    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    am anfang error_reporting(E_ALL)

    so das auch die NOTICE angezeigt werden
    ( die aufgetretenen "Fehler/Warnungen/Hinweise" bearbeiten )

    dies sollte meist schon helfen ( sollte Zend bereitstehen mal nach Performance-"bremsen" suchen )

    mfg


    [edit]

    und mit "Konstanten als arrayindex" [findex] sollte man sich nochmal überlegen

    $row[3]=="1ZWS" strings beim vergleich immer auf die linke seite
    ( hat nichts mit php5 zutun sondern mit sauberem code )
    so könnte der fehler $row[3]="1ZWS" nicht passieren da einem string einen wert zuweisen mit einer fehlermessage belohnt wird

    alle diese kleinigkeiten helfen dabei das der code unter welcher php version auch immer sauber/schnell läuft

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich poste mal ein Script, pflückt sich einige Daten, und erstellt daraus einen einfache Tabelle,... der Vorgang dauert 30sec....



    PHP-Code:
    <?php
    $ar_f
    =array();
        
    $count=0;
        
    $anz=0;
        
    $result mysql_query("SELECT `K_FIndex`,`K_Plaetze`,`K_Index` FROM `tbl_kontingente` WHERE `K_KNr`='$user_kdnr'" );
        while(
    $row mysql_fetch_row($result)) {
        
            
    $ar_f[$count][findex]=$row[0];
            
    $ar_f[$count][plaetze]=$row[1];
            
    $ar_f[$count][kindex]=$row[2];
            
            
    $result2 mysql_query("SELECT `PF_KIndex` FROM `tbl_personen_fluege` WHERE `PF_KIndex`='$ar_f[$count][kindex]'" );
            
    $count2=mysql_num_rows($result2);
            
    $anz+=$count2;
            
    $ar_f[$count][anz]=$count2;
            
    $count++;
        }

        
    $count=0;

        while(
    $count<count($ar_f)){
        
    $findex=$ar_f[$count][findex];

        
        
    $result mysql_query("SELECT `FNr`,`FDatum`,`Strecke` FROM `tbl_fluege` WHERE `FIndex`='$findex'" ) or die (mysql_error());
        while(
    $row mysql_fetch_row($result)) {
            
    $ar_f[$count][fnr]=$row[0];
            
    $pos=strpos($row[1]," ");
            
    $ar_f[$count][fdatum]=substr($row[1],0,$pos);
            
    $ar_f[$count][strecke]=$row[2];
            
            
        
        }
        
        
        
        
    $result mysql_query("SELECT `APT_Airport`,`APT_Zeit`,`APT_Zeit_Ankunft`,`APT_Option` FROM `tbl_fluege_apt` WHERE `APT_FIndex`='$findex'" )or die (mysql_error());
        while(
    $row mysql_fetch_row($result)) {
        
        if(
    $row[3]=="0Start"){
        
    //Daten Abflughafen
            
    $ar_f[$count][airport_start]=$row[0];
            
    $ar_f[$count][airport_start_ab]=$row[1];
            
    $ar_f[$count][airport_start_an]=$row[2];
        }else if(
    $row[3]=="1ZWS"){
        
    //Daten erste Zwischenlandung
        
    $ar_f[$count][airport_1zws]=$row[0];
            
    $ar_f[$count][airport_1zws_ab]=$row[1];
            
    $ar_f[$count][airport_1zws_an]=$row[2];
        }else if(
    $row[3]=="2ZWS"){
        
    //Daten zweite Zwischenlandung
                
    $ar_f[$count][airport_2zws]=$row[0];
            
    $ar_f[$count][airport_2zws_ab]=$row[1];
            
    $ar_f[$count][airport_2zws_an]=$row[2];
        }else if(
    $row[3]=="Ziel"){
        
    //Daten Zielflughafen
            
    $ar_f[$count][airport_ziel]=$row[0];
            
    $ar_f[$count][airport_ziel_ab]=$row[1];
            
    $ar_f[$count][airport_ziel_an]=$row[2];
        }
        }    
        
        
        echo 
    "<tr onMouseOver=\"f_drin(this)\" onMouseOut=\"f_raus(this)\" onClick=\"f_detail('".$ar_f[$count][fdatum]."','".$ar_f[$count][fnr]."','".$ar_f[$count][plaetze]."','".$ar_f[$count][anz]."','".$ar_f[$count][strecke]."','".$ar_f[$count][airport_start]."','".$ar_f[$count][airport_start_an]."','".$ar_f[$count][airport_start_ab]."','".$ar_f[$count][airport_ziel]."','".$ar_f[$count][airport_ziel_an]."','".$ar_f[$count][airport_ziel_ab]."','".$ar_f[$count][airport_1zws]."','".$ar_f[$count][airport_1zws_an]."','".$ar_f[$count][airport_1zws_ab]."','".$ar_f[$count][airport_2zws]."','".$ar_f[$count][airport_2zws_an]."','".$ar_f[$count][airport_2zws_ab]."')\" class=\"pointer\">
          
          <td height=\"20\"><div align=\"center\">"
    .$ar_f[$count][fdatum]."</div></td>
                <td><div align=\"center\">"
    .$ar_f[$count][fnr]."</div></td>
                <td><div align=\"center\">"
    .$ar_f[$count][plaetze]."</div></td>
                <td width=\"85\"><div align=\"center\">"
    .$ar_f[$count][fdatum]."</div></td>
                <td width=\"85\"><div align=\"center\">"
    .$ar_f[$count][airport_start]."</div></td>
                <td><div align=\"center\">"
    .$ar_f[$count][airport_ziel]."</div></td>
             </tr>"

        
        
    $count++;
        }

    ?>

    Einen Kommentar schreiben:


  • Basti
    antwortet
    Re: PHP4 vs PHP5

    Würde mich sehr Wundern, dass es an PHP5 liegt. Zumindest ist mir nichts dergleichen bekannt.

    Zitat von Lukin
    Kann man da irgendwas machen?
    In jedem Falls solltest du deine Erkenntnis ein wenig näher eingrenzen:
    Zitat von Lukin
    immer wenn ein bisl mehr PHP benötigt wird um Daten zu verarbeiten und diese darzstellen
    ...und natürlich sofort deinen Provider wechseln, klar.

    Basti

    Einen Kommentar schreiben:

Lädt...
X