|
|
#1 (permalink) | |||
|
Multitalent
|
Ich habe ein kurioses Problem:
In meinem Backend funktioniert alles wunderbar. Nur an einer Stelle gibt es eine nicht enden wollende Seitenladezeit und auch das PHP-Timeout wird völlig ausgehebelt. Dementsprechend bekomme ich weder über Wincachegrind noch über Apache-Logs raus an welcher Stelle vielleicht eine Endlosschleife o.ä. sein könnte. Eine mögliche Problemstelle sieht quasi so aus: PHP-Code:
Als ob PHP wegen diesem Block (für diese Anfrage) komplett eingefroren wird. Warum gehen nicht mal die()'s vor dem Block? Warum kommt kein Timeout? |
|||
|
|
|
| Gesponsorte Links |
|
|
#2 (permalink) |
|
ist maskulin
|
was sagt denn die error.log vom Apache ?
Do not argue with an idiot. He will drag you down to his level and beat you with experience
![]() 99%Refback für alle | Novoline-Spiele | ich zahle meine Schulden | 3 mio Lose + Aktivitätsboni bei eBesucher | eSig |
|
|
|
|
|
#3 (permalink) |
|
Erfahrener Benutzer
|
Ohne exakte Begründung- also nur aus dem Bauch raus - klingt mir das nach einem Problem mit einem evtl. vorhandenem CompilerCache, da kleine unwichtige Änderung am Quelltext zunächst zur problemlosen Ausführung des Codes führen, und anschließend das gleiche Ergebnis (Problem) wieder auftaucht.
Schon mal in die Richtung geforscht? Viele Grüße aus Berlin leller |
|
|
|
|
|
#4 (permalink) |
|
Multitalent
|
Noch eine kleine Idee von mir: Vielleicht hat es irgendwas mit Cookies zu tun. Das sieht bei mir so aus: Ist man eingeloggt, wird bei jedem Aufruf ein neuer Token generiert und in Cookies und DB gespeichert, auch wenn man eingeloggt im Frontend unterwegs ist. Das funktioniert auch schon seit mehreren Wochen reibungslos und wurde seitdem nicht mehr umprogrammiert.
Wenn ich also das FE aufrufe (ausgeloggt), dann nach dem Login im BE die entsprechende Stelle aufrufe (sie funktioniert!), anschließend wieder was im FE mache (funktioniert!), erst dann friert diese Stelle im BE ein - während jede andere Aktion im BE und FE funktioniert. Ich bekomme den Zustand durch künstliche Cookiemanipulation/-löschen aber nicht reproduziert. Vermutlich ist das also doch nicht das Problem. Zumal dieser "Trick" mit der Variablenendung ja nun auch keine Cookies beeinflussen dürfte. Nix Ähm nö. Ich wüsste jetzt nicht mal, dass ich einen installiert hätte. Aber müsste in dem Fall nicht auch ein zusätzliches die() vor dem if-Block zu einer neuen Cashingversion führen? |
|
|
|
|
#9 (permalink) | |||
|
Erfahrener Benutzer
|
Du kannst dir ja auch ein eigenes Logfile schreiben lassen...
PHP-Code:
|
|||
|
|
|
|
|
#10 (permalink) | ||||||
|
Multitalent
|
Zitat:
In dem Block wird ggf. gar nichts ausgeführt (wenn ich alles auskommentiere). Das wurmt mich ja gerade so. Zitat:
Zitat:
Ich habe die Funktionsdefinition ganz an den Anfang der ersten Datei geschrieben und auch direkt dahinter einen ersten 'Init'-Aufruf. Bei jeder anderen BE-Seite (es wird immer die selbe php-Datei zuerst aufgerufen) wird ordnungsgemäß geloggt. Bei meiner heutigen Problemurl passiert nichts, nichtmal diese Init-Zeile. Auch ein die('test'); in der allerersten Zeile (natürlich nach dem <?php ) wird komplett ignoriert. Könnte es nun also eher ein Apache-Problem sein? Ich habe nun auch rausgefunden, dass schon ein zweites laden der selben Url dazu führt, auch ohne zwischenzeitliche FE-Aktion. Nachdem ich die Variable wieder umbenannt habe, funktioniert es - auf der neuen Url. Auf der alten ist es noch genauso eingefroren. Als ob der erste Aufruf (wurde komplett geladen) dazu führt, das diese Url für den Tag eingefroren wird. Wenn es aber am Script liegt, müsste doch auf der neuen Url auch ab dem zweiten Aufruf alles tot sein?! Und was passiert in dem ersten Aufruf: Ein paar MySQL-Abfragen und die Darstellung der Ergebnisse als Tabelle. Keine Klasse wird nur dort verwendet wird, nichts außergewöhnliches. Und der Apache-Log? An irgendeiner zentralen Stelle wird regelmäßig ein E_USER_WARNING geworfen (suche ich gleich mal), ein paar Startschwierigkeiten wegen der Logfunktion und ansonsten scheinbar unspektakuläre Einträge zum Serverstart: Code:
zu Zeile 4: phpinfo sagt was von 5.3.5 zu Zeile 14+15: Keine Ahnung warum das kommt, in dieser .htaccess kommen nur die Befehle AddIcon, IndexOptions und 2x RewriteRule (die nichts mit diesem Projekt zu tun haben) vor. Diese Zeilen wiederholen sich danach auch nicht mehr zu Zeile 16: Der ist von mir und kommt ständig wieder. Ab hier hat also letztlich der Browser was in dem Projekt gewollt. |
||||||
|
|
|
|
#11 (permalink) |
|
Multitalent
|
Das Problem besteht weiterhin.
Weiteres Detail das ich rausgefunden habe: Wenn man einen weiteren GET-Parameter anhängt, funktioniert auch die eingefrorene Url - es ist natürlich nicht 100%ig die selbe Url, aber der eingefrorene Teil kommt komplett darin vor. Im aktuellen Fall ist dieser Paramater gedacht um die Auswahl der dargestellten Seite zu verfeinern/zu filtern. Es liegt also definitiv ein Apache-Problem o.ä. vor, da beide Anfragen durch den selben if-Block aus dem ersten Post laufen. Tja soll ich mir nun für die entsprechenden Menülinks einen zufälligen GET-Parameter anhängen? Ich möchte aber gerade hier eigentlich nicht die Adresszeile vollspamen, weil dort eh schon mit hashs gearbeitet wird und die Länge ja begrenzt ist.. |
|
|
|
|
#12 (permalink) |
|
Erfahrener Benutzer
|
Bevor Du diesen IF Block, oder das ganze was jetzt nicht funzt, eingebaut hast, hat doch alles funktioniert oder ?
Wenn ja, dann würde ich nicht unbedingt davon ausgehen, es sei ein Apache Problem. Ich habe Fehler in meinen Scripten vergeblich gesucht. Wenn Du mit Short Cuts arbeitest, dann könnte folgender Fehler vorliegen: ein Steuerzeichen, welches zu Fehlinterpretationen führt. Ich habe schon mal über eine Stunde nen Fehler gesucht. Die gleiche Datei gelöscht und neugeschrieben und es funzte. Wenn es ein Prog gibt, das Steuerzeichen in einem Textdokument sichtbar macht, dann probier es mal auf diesem Weg. Ist ne Vermutung, aber möglich wär es. Wenn nicht, ich wüßt - ehrlich gesagt- nicht wo ich sonst noch was suchen könnte. |
|
|
|
|
|
#13 (permalink) |
|
Multitalent
|
Ja klar natürlich ging es erstmal. An irgendeinem Tag hat es nicht mehr getan, dieser seltsame Einfriereffekt ist aufgetreten und ich habe erstmal eine halbe Ewigkeit gebraucht um das Problem halbwegs einzugrenzen.
In Datei A ist diese if-Block-Geschichte, die steuert was überhaupt gemacht werden soll. Dort wurde im Prinzip schon länger nichts mehr verändert. Ich hatte Datei B gerade erweitert, die dann (und nur dann) angesprochen wird, wenn eben gewisse GET-Parameter zusammentreffen. Funktionierte super toll und funktioniert ja auch jetzt an jedem Tag für einen einzigen Aufruf - also kein parse error oder sonstewas. Aber ab jedem zweiten Aufruf der selben Url geht nichts mehr, nicht wenn ich Datei B komplett auskommentiere und nicht mal das die() in der ersten Zeile springt an - von einem timeout ist auch nichts zu merken. Ich glaube mit den 20.000 Zeilen habe ich weit untertrieben. Alleine diese beiden Dateien haben zusammen ca. 5.000. Da ist nicht viel mit neu schreiben oder Zeichen finden. Außerdem wird wohl bald mal noch eine kleine Auswertungsfunktion anstehen, die die Zeilen automatisch zählt PS: Aktuell habe ich es wirklich mal mit der angehängten Zufallszahl überbrückt. Ist zwar unschön aber schont die Nerven. |
|
|
|
|
#14 (permalink) |
|
Erfahrener Benutzer
|
schon mal probiert, wenn du eine neue Datei anlegst, und zeilenweise den alten code reincopierst, wie lange es läuft, oder ob es von anfang an nicht geht.
Erklär mir mal, auch gern per pn, wie das genau aufgebaut ist. Vll ist in dem ganzen eine Schleife drin, die nicht verlassen wird, oder eine Abbruchbedingung wird nicht erfüllt. Klingt nach einem "Schleifenproblem" - das nicht verlassen wird, aber in das immer wieder reingesprungen wird ! |
|
|
|
|
|
#15 (permalink) |
|
Multitalent
|
Erklär mir mal wie es ein Schleifenproblem sein könnte, wenn..
|
|
|
![]() |
| Gesponsorte Links |
| Anzeige |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [PHP/MySQL] Netbeans und remote debugging | DadyCool | Programmierung | 2 | 25.11.2009 16:34:57 |
| Suche jemanden der sich mit Ajax auskennt (debugging) | VIPbanner_de | Lose4Scripts | 1 | 05.08.2008 11:15:53 |
| Debugging: Hilfe, da ist ein Fehler! | theHacker | FAQ und Archiv | 4 | 29.12.2007 20:27:38 |
| 100k für Debugging | Antigo | Lose4Action | 11 | 25.10.2006 22:09:31 |