Laufzeitverzögerung wegen PHP-Version?

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

  • #16
    War nur ein Schuss ins Blaue …

    Was du noch machen könntest, wäre per phpinfo() mal schauen, ob irgenwelche Cache-Erweiterungen wie APC oder sowas laufen, bzw. in der Dokumentation des Hosters nachschauen.

    Oder auch einfach mal beim Hoster nachfragen
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      ob irgenwelche Cache-Erweiterungen wie APC oder sowas laufen,
      Ja, das sehe ich auch....

      Mein Tipp:
      Erstelle keine PHP Datei mit den Daten, sondern eine CSV, oder nutze eine DB. Ich befürchte auch, dass dir da ein PHP Optimizer mit Bytecodecache einen Streich spielt.
      Wir werden alle sterben

      Kommentar


      • #18
        ich habe gerade beide PHP-Info überprüft und folgenden Unterschied gefunden bei opcache.enable:
        lima-city: on
        php-friends: off

        Meint ihr das?

        Da das Script, was ich zum testen für euch bereitgestellt habe, nur als Beispiel diente, müsste ich alles was ich wirklich am produktiv laufen habe, komplett umschreiben auf DB/CSV

        Edit:
        Hab das mal auf CSV-Umgestellt die result.php, und siehe da: Keine Zeitverzögerung mehr.
        Aber das kann es doch nicht sein.

        @combie:
        Ist mein Code immer noch der eindeutig Schuldige, so wie du es ja tituliert hast? Oder hast du jetzt die Badehose an
        Zuletzt geändert von Wasser_Wanderer; 08.03.2014, 23:50.

        Kommentar


        • #19
          Zitat von Wasser_Wanderer Beitrag anzeigen
          Ist mein Code immer noch der eindeutig Schuldige, so wie du es ja tituliert hast?
          Indirekt ja. PHP-Dateien als Datenspeicher zu missbrauchen ist einfach nur Gaga. Wie kommt man auf so eine Idee?

          Mal davon abgesehen, dass du den Kontextwechsel nicht beachtet hats. Also im einfachsten Fall wird deine Anwendung dadurch fehlerhaft. Im schlimmsten Fall nutzt jemand diese Lücke um Zugang zum Server zu bekommen.
          Zuletzt geändert von h3ll; 09.03.2014, 04:06.

          Kommentar


          • #20
            Zitat von h3ll Beitrag anzeigen
            Indirekt ja. PHP-Dateien als Datenspeicher zu missbrauchen ist einfach nur Gaga. Wie kommt man auf so eine Idee?
            Wie ich auf so eine Idee kam?

            1. Wusste ich es vor 4 Jahren nicht besser
            2. Hat ja bisher immer funktioniert
            3. Lerne ich ich noch MySql
            4. Nun muss ich wieder umdenken und MySql_i lernen
            5. .... to be continued
            Aber Danke das ihr euch mit diesem Thread befasst habt, aber ich weis leider immer noch nicht GENAU die Ursache bei der serverseitigen Konfiguration liegt.

            War es das was ich im letzten Beitrag in der PHP-Info gefunden hatte?

            P.S.
            Klar war da eine Sicherheitslücke drin (ist geschlossen). Es ging doch ursprünglich um die Responce-Zeit.
            Nicht mehr und nicht weniger.

            Ich nehm das Bsp sowieso wieder vom Server. Getestet habt ihr ja dankensweise.
            Zuletzt geändert von Wasser_Wanderer; 09.03.2014, 04:12.

            Kommentar


            • #21
              Zitat von Wasser_Wanderer Beitrag anzeigen
              1. Wusste ich es vor 4 Jahren nicht besser
              Ok.
              Zitat von Wasser_Wanderer Beitrag anzeigen
              2. Hat ja bisher immer funktioniert
              Ganz schlechtes Argument. Nur weil etwas funktioniert, heißt es nicht, dass es so richtig ist.
              Zitat von Wasser_Wanderer Beitrag anzeigen
              3. Lerne ich ich noch MySql
              Seit 4 Jahren?
              Zitat von Wasser_Wanderer Beitrag anzeigen
              4. Nun muss ich wieder umdenken und MySql_i lernen
              Warum hast du überhaupt mit dem veralteten mysql angefangen?
              Zitat von Wasser_Wanderer Beitrag anzeigen
              5. .... to be continued
              Aber Danke das ihr euch mit diesem Thread befasst habt, aber ich weis leider immer noch nicht GENAU die Ursache bei der serverseitigen Konfiguration liegt.
              Wie bereits angesprochen ist es wohl irgendein Code-Optimizer. Vermutlich einer von denen:

              List of PHP accelerators - Wikipedia, the free encyclopedia

              Genaueres wirst du erfahren, wenn du mit dem Serveradministrator sprichst.

              Zitat von Wasser_Wanderer Beitrag anzeigen
              War es das was ich im letzten Beitrag in der PHP-Info gefunden hatte?
              Das schaut danach aus:

              PHP: Introduction - Manual

              Aber ich würde jetzt nicht die Schuld beim Server suchen. Wie gesagt, PHP-Dateien sind normalerweise statisch, also sie verändern sich nicht. Das System rechnet also nicht mit sowas, sondern vertraut darauf, dass du keine PHP-Dateien im laufenden Betrieb modifizierst.

              Kommentar


              • #22
                Zitat von Wasser_Wanderer Beitrag anzeigen

                @combie:
                Ist mein Code immer noch der eindeutig Schuldige, so wie du es ja tituliert hast? Oder hast du jetzt die Badehose an
                Naja....
                Eigentlich ja, dein Code... wie Mr h3ll schon erklärt hat.

                Was wir, und auch du, jetzt gelernt haben sollten ist:
                Ohne publizieren des falsch laufenden Codes geht nix.
                Auch die Links waren SEHR hilfreich. Deine anfängliche Geheimhaltungsstrategie war wenig Ziel führend. Und die Ansage, dass es nichts mit deinem Code zu tun hat, hat sich als falsch erwiesen.

                Ohne die Information, dass du PHP Dateien dynamisch modifizierst, wären wir da vermutlich nie drauf gekommen.

                Mit meiner ersten Vermutung lag ich nicht ganz richtig. Dass es ein HTTP Cache ist, das hast du überprüft und es hat sich bewiesen, dass es das nicht ist. Peter hat dann die richtigeren Gedanken gehabt. Mit dem Festplatten Cache lag er auch erst daneben. Aber auch das macht nix. Es ist und war ein Cache Problem. Was anderes konnte es nicht (mehr) sein.

                So gehts in Foren.
                Information liefern. Diskutieren. Fehler finden.
                Das ist OK, finde ich.
                Auch wenn ich dabei mal nicht 100% recht habe, bricht mir da kein Zacken aus der Krone.

                4. Nun muss ich wieder umdenken und MySql_i lernen
                Warum nicht gleich PDO

                z.B.: Oder spiele mal mit dem "RedBean ORM" (Google gibt Auskunft)
                Damit hast du deine Anwendung in 2 Stunden auf DB Betrieb umgebaut, ohne SQL überhaupt gesehen zu haben.

                Tipp:
                Wenn du nächstes mal auf solche seltsame Bugs stößt, triff keine voreiligen, willkürlichen, Festlegungen, wie:
                Das Script kanns nicht sein
                Die PHP Version ist Schuld
                Solche Annahmen blockieren dich selber und die Helfer.
                Zuletzt geändert von combie; 09.03.2014, 07:41.
                Wir werden alle sterben

                Kommentar


                • #23
                  Zitat von Wasser_Wanderer Beitrag anzeigen
                  Da das Script, was ich zum testen für euch bereitgestellt habe, nur als Beispiel diente, müsste ich alles was ich wirklich am produktiv laufen habe, komplett umschreiben auf DB/CSV
                  Eine recht schnell umsetzbarer Workaround könnte sein, dass du die Dateien, in denen du die Daten speicherst, einfach nicht mehr [FONT="Courier New"].php[/FONT] benennst, sondern [FONT="Courier New"].irgendwasanderes[/FONT] – solange du sie nur per include/require einbindest, ist es PHP ja egal, welche Endung sie haben. [FONT="Courier New"].php[/FONT] wäre ja nur wichtig, wenn sie direkt über den Webserver ausgeliefert werden sollen, damit dieser weiß, dass er sie durch den PHP-Parser schicken muss. Allerdings wird dann auch der enthaltene PHP-Code angezeigt oder zum Download angeboten, wenn jemand die Adresse kennt und eben das macht, sie direkt per HTTP abrufen. Wenn das nicht passieren soll, müsstest du also den direkten Zugriff per HTTP unterbinden, z.B. mittels [FONT="Courier New"]<FILES>[/FONT] und [FONT="Courier New"]DENY[/FONT] in einer [FONT="Courier New"].htaccess[/FONT]-Datei.

                  (Bei diesem Vorschlag lasse ich jetzt mal dahin gestellt sein, wie sinnvoll es ist, Daten in PHP-Dateien zu speichern – wie gesagt, als schneller Workaround …)
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #24
                    Ooooookaaaaaay ...
                    Ich habe Seite 1 gelesen, dachte mir: "Bastelst mal eben was um die Lösung ein wenig voranzutreiben."
                    Gedacht, getan.
                    Jetzt erst sehe ich, dass es eine zweite Seite gibt auf der das Problem behoben wurde.

                    Ich hoffe es stört niemanden, wenn ich dennoch meinen "Lösungsansatz" poste.
                    Da die Speicherung in einer Datei vorgenommen wurde, entschied ich mich für eine SQLite Datenbank.
                    Hier eben der aufgeräumte Quelltext mit Kommentare. Sogar getestet.
                    Aber ich gebe keine Garantie auf Unhackbarkeit.

                    PHP-Code:
                    <?php
                    <?php
                        
                    // Wochentage definieren
                        
                    $Wochentage = array( "So""Mo""Di""Mi""Do""Fr""Sa" );

                        
                    // SQLite ""Verbindung"" herstellen
                        
                    $PDO = new PDO"sqlite:daten.sqlite" );

                        
                    // Tabelle anlegen, sofern noch nicht vorhanden
                        
                    $PDO->query"CREATE TABLE IF NOT EXISTS results ( ID INTEGER PRIMARY KEY, Player1 VARCHAR(255), Player2 VARCHAR(255), Score1 INTEGER, Score2 INTEGER, Date INTEGER, Weekday INTEGER )" );

                        
                    // Variablen fuer Fehlermeldungen
                        
                    $Player1Error false;
                        
                    $Player2Error false;
                        
                    $Result1Error false;
                        
                    $Result2Error false;

                        
                    // Pruefen, ob das Formular abgeschickt wurde
                        
                    if ( strtoupper$_SERVER"REQUEST_METHOD" ] ) === "POST" ) {
                            
                    // Wichtige Daten holen
                            
                    $Player1 filter_inputINPUT_POST "sp_1" FILTER_SANITIZE_STRING );
                            
                    $Player2 filter_inputINPUT_POST "sp_2" FILTER_SANITIZE_STRING );
                            
                    $Result1 filter_inputINPUT_POST "erg_1"FILTER_VALIDATE_INT    );
                            
                    $Result2 filter_inputINPUT_POST "erg_2"FILTER_VALIDATE_INT    );
                            
                    $AllOkay true;

                            
                    // Daten pruefen
                            
                    if ( (!$Player1) || ($Player1 === NULL ) ) {
                                
                    $Player1Error true;
                                
                    $AllOkay false;
                            }
                            if ( (!
                    $Player2) || ($Player2 === NULL ) ) {
                                
                    $Player2Error true;
                                
                    $AllOkay false;
                            }
                            if ( (!
                    $Result1) || ($Result1 === NULL ) ) {
                                
                    $Result1Error true;
                                
                    $AllOkay false;
                            }
                            if ( (!
                    $Result2) || ($Result2 === NULL ) ) {
                                
                    $Result2Error true;
                                
                    $AllOkay false;
                            }

                            
                    // Ggeen SQL-Injections
                            
                    $Player1 addslashes$Player1 );
                            
                    $Player2 addslashes$Player2 );
                            
                    $Result1 addslashes$Result1 );
                            
                    $Result2 addslashes$Result2 );

                            
                    // Daten in die Datenbank schreiben, sofern keine Fehler aufgetreten sind.
                            
                    if ( $AllOkay ) {
                                
                    $PDO->query"INSERT INTO results ( Player1, Player2, Score1, Score2, Date, Weekday ) VALUES ('".$Player1."', '".$Player2."', '".$Result1."', '".$Result2."', '".time()."', '".date("w")."' )" );
                            }
                        }

                        
                    // Alle Daten aus der Datenbank holen
                        
                    $Statement $PDO->query"SELECT * FROM results" );
                        
                    $AllResults $Statement->fetchAll();
                    ?>
                    <!doctype>
                    <html>
                        <head>
                            <title>Test</title>
                            <link rel="stylesheet" type="text/css" href="../styles.css">
                        </head>
                        <body onload="document.Form.name.focus()" style="text-align: center;">
                            <h1>Ergebnisse</h1>

                            <h3>Neuen Eintrag hinzuf&uuml;gen</h3>
                            <form name="Form" method="POST">
                                <?php
                                    
                    if ( $Player1Error ) {
                                        echo 
                    "<strong>Spieler 1 ist ung&uuml;ltig</strong><br>";
                                    }
                                    if ( 
                    $Player2Error ) {
                                        echo 
                    "<strong>Spieler 2 ist ung&uuml;ltig</strong><br>";
                                    }
                                    if ( 
                    $Result1Error ) {
                                        echo 
                    "<strong>Punktestand 1 ist ung&uuml;ltig</strong><br>";
                                    }
                                    if ( 
                    $Result2Error ) {
                                        echo 
                    "<strong>Punktestand 2 ist ung&uuml;ltig</strong><br>";
                                    }
                                
                    ?>
                                <table style="margin: 0 auto;">
                                    <tr>
                                        <td><input value="Karl" name="sp_1" required="required"> :</td>
                                        <td> <input value="Joe"  name="sp_2" required="required"></td>
                                    </tr>
                                    <tr>
                                        <td><input name="erg_1" id="name" required="required" type="number"> :</td>
                                        <td> <input name="erg_2" required="required" type="number"></td>
                                    </tr>
                                    <tr>
                                        <td colspan="2">
                                            <input type="submit" value="OK" name="OK">
                                        </td>
                                    </tr>
                                </table>
                            </form>

                            <h3>Bisherige Eintr&auml;ge</h3>
                            <p>
                                Anzahl Eintr&auml;ge: <?php echo count$AllResults ); ?>
                            </p>
                            <table style="margin: 0 auto;">
                                <tr>
                                    <th>Spieler 1</th>
                                    <th>Spieler 2</th>
                                    <th>Ergebnis</th>
                                    <th>Wochentag</th>
                                    <th>Datum</th>
                                </tr>
                    <?php
                        
                    foreach ( $AllResults as $Entry ) {
                    ?>
                                <tr>
                                    <td><?php echo $Entry["Player1"]; ?></td>
                                    <td><?php echo $Entry["Player2"]; ?></td>
                                    <td><?php echo $Entry["Score1"]." : ".$Entry["Score2"]; ?></td>
                                    <td><?php echo $Wochentage$Entry["Weekday"] ]; ?></td>
                                    <td><?php echo date("d.m.y, H:i"$Entry["Date"] ); ?></td>
                                </tr>
                    <?php
                        
                    }
                    ?>
                            </table>
                        </body>
                    </html>
                    Ich hoffe, dass ist nicht zu falsch.

                    Gruß
                    Chris

                    Kommentar


                    • #25
                      Zitat von h3ll Beitrag anzeigen
                      Wie gesagt, PHP-Dateien sind normalerweise statisch, also sie verändern sich nicht. Das System rechnet also nicht mit sowas, sondern vertraut darauf, dass du keine PHP-Dateien im laufenden Betrieb modifizierst.
                      Das kann ich so nicht nachvollziehen da es ja bei einem anderen Hoster klappt


                      Sodele meine lieben Diskussionsteilnehmer,

                      nochmals lieben Dank für euren In- und Output.

                      Für kleine Projekte schreibe ich die Daten in eine *.irgenwas Datei, damit diese nicht mehr durch den PHP-Parser geht.

                      Für Größere bzw. wahrscheinlich größer werdene Projekte, werde ich eine DB nehmen.

                      Nein: Ich lerne nicht seit 4 Jahren MySql, sonder PHP. MySql hab ich vor ca. 7 Monaten mal angeschnuppert und erst mit mysql angefangen und später bemerkt habe das mysql_i nun State of the Art wird.

                      Warum kein ich kein PDO anwende? Weil ich da nicht durchsteige.
                      Warum steige ich da nicht durch? Weil mir dazu wohl das logische Denken fehlt. keine Ahnung. Will es nun nicht auf mein Alter schieben.

                      Meine Projekte sind nur ein Hobby und ausschliesslich privat. Klar muss ich auf Sicherheit achten. Und das mache ich auch so gut ich es eben kann und bin natürlich dankbar für eure Anregungen, die mir helfen besser zu werden.

                      Nochmals Danke an euch, habe wieder was dazugelernt.

                      P.S. Der Admin des Hosters hat mir seit 4 Tagen nicht geantwortet.
                      Klar, ist ja FREE. Daher sind meine Erwartungen in dem Fall auch gering.

                      Kommentar


                      • #26
                        Will es nun nicht auf mein Alter schieben.
                        Bin ca 1 Dutzend Jahre älter...
                        Und dem entsprechend träge...
                        Wir werden alle sterben

                        Kommentar


                        • #27
                          Zitat von anihex Beitrag anzeigen
                          Ich hoffe es stört niemanden, wenn ich dennoch meinen "Lösungsansatz" poste.

                          Gruß
                          Chris
                          Hallöchen Chris,
                          danke auch an dich, das du dich da reingehängt hast.

                          Habe deinen Vorschlag getestet und find deine Idee gut.

                          Vielen Dank

                          Kommentar


                          • #28
                            Verstehe ich ganz das nicht. Liegt das nicht an der PHP Version? Wenn es ist die Version. Es gibt keine Problem.

                            Kommentar

                            Lädt...
                            X