php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.10.2005, 19:42  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard Chat - Ausgabe bricht ab

Hallo,
ich habe selbst folgendes Problem:
Ich bin an den letzten Entwicklungen für einen PHP-Chat. Ja, ich weiß dass PHP dafür überhaupt nicht geeignet ist, aber ich möchte hier nicht darüber diskutieren, wer sich ansehen will warum ich PHP doch nutze soll mal die Suche mit "vStreams" benutzen.

Nun, zum eigenlichen Problem.
Es klappt soweit alles wunderbar, nur an der Chatausgabe haperts. Denn die setzt nach einer bestimmten Zeit einfach aus (welches Zeitintervall dies ist habe ich noch nicht herausgerunden). Nun, erster Gedanke: max_execution_time. Die steht bei meinem Hoster auf 30, das Script braucht aber mehr als 10 (15?) Minuten bis es abbricht. Woran kann dies liegen? Hier mal ein Ausschnitt aus der relevanten Datei:
PHP-Code:
<?php
if($user['login'] == TRUE AND $user['chatroom'] != '') {

                  function 
kill_thread() {
                           GLOBAL 
$mysql$_BENCH;
                           
#$mysql -> query("KILL " . $mysql -> thread_id);
                           
benchStop();
                           
                           
mail($_BENCH['__mail'],
                                
"Sag-Ich-Dir.Net - ChatHasEnded",
                                
date('d.m H:i'time()) . mysql_error() . mysql_errno() . benchShow(),
                                
$header);
                  }
                  
// Alles zum ausprobieren - ini_set greift nicht, und set_time_limit ebenfalls nicth (bekomme eine Warnung aus), SAFE MODE
                  
ob_end_flush();
                  
set_time_limit(0);
                  
ini_set('max_execution_time'0);
                  
ignore_user_abort(1);
                  
register_shutdown_function('kill_thread');
                  
benchStart();

/*
   ...
*/
        // Hier beginnt die Chatausgabe
        
while( (connection_aborted() == FALSE AND connection_status() == 0) AND
               ( ( 
time() - $chat -> get_lastaction($user['id']) ) < 1200) AND
               (
$chat -> get_room($user['id']) != '')) {
               
                
$newposition $chat -> get_last_messageid($user['chatroom']);
                
// Hier werden nur die Messages ausgelesen - irrelevant,
                // da hier das Script nicht terminiert werden kann (die, exit...)
                        
echo "\r\n";
                }
                
#echo ' '; // Damit flush() auch was zum senden hat..
                
                
$lastposition $newposition;
                
                
flush();
                
sleep(1);
        }

        
// Falls etwas schiefgelaufen ist
        
if( (connection_aborted() == TRUE) OR
            ( ( 
time() - $chat -> get_lastaction($user['id']) ) >= 1200 ) OR
            (
$chat -> get_room($user['id']) == '') OR $chat -> wasKicked($user['id'])) {
                     
// Hier beginnt dann der Errorhandler
                     
echo '';
           }
                
?>
Etwas zum Errorhandler - im Quelltext finde ich nirgends , von daher bricht das Script auch nicht an dieser Setlle ab... Nach der While-Schleife hatte ich auch eine Ausgabe (zum Testen) angegeben - aber auch hier wird nichts ausgegeben.

An was liegt das, dass das Script eifnach so (ohne Felermeldung) abbricht? (PHP 4.4.0, error_reporting(E_ALL), display_errors auf true) ..
Chr!s ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.10.2005, 19:54  
Gast
 
Beiträge: n/a
Standard

Hm, warum Du es in php machst, weiss ich jetzt -nachdem ich also gelesen habe, dass der irreführende Name vStream für die Vorgehensweise benutzt wird- immer noch nicht
Mir auch völlig egal. Ich will da genausowenig drüber diskutieren.

Hast Du bei Deinem Provider mal nachgefragt, ob es noch weitere Begrenzungen gibt, die Du nicht umgehen kannst, zB auf Prozessebene falls php als cgi läuft?
 
Alt 04.10.2005, 19:59  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Ich hatte schoneinmal einen PHP-Chat laufen - damals von MyMazen, ein ganz nettes Ding (früher jedenfalls). Nun, lief einwandfrei & ohne Probleme. Auf die gleiche Art und Weise (diese Art "simulation") läuft auch meiner - local ging das ohne Probleme, und selbst der alte Chat läuft online 1A - nur ich weiß nicht, was an meinem SCript nicht funktioniert. Ich hab an jeder Ecke und an jedem Ende test-routinen eingebaut & Mailversand an mich (vorher geprüft, $_BENCH und so), ich bekomme den Fehler einfach nicht eingegrenzt..

PHP läuft bei mir als Modul und nicht als CGI, von daher wird das auch keine Probleme bereiten..

//edit
Soeben ist die Mail die ich unter register_shutdown_functino() angegeben habe angekommen -
Zitat:
04.10 19:59
Mehr steht da nicht drin. folglich gibts auch keinen MySQL-Fehler..

//edit2
Lol, nun kam die E-Mail gleich 2x hintereinander, aber das Script läuft weiter.. hatte jemand schoneinmal solche Erfahrungen?
Chr!s ist offline  
Alt 04.10.2005, 22:47  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

nein. Aber vllt mal error reporting auf E_ALL einstellen, vllt kriegt man damit ja was raus... glaub ich zwar net, kann aber sein, ich weiß ja net was bei dir default is
Buhmann ist offline  
Alt 05.10.2005, 11:16  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Zitat:
Zitat von Chr!s
An was liegt das, dass das Script eifnach so (ohne Felermeldung) abbricht? (PHP 4.4.0, error_reporting(E_ALL), display_errors auf true) .
Hatte ich schon in meinem ersten Post geschrieben
Was ich noch anmerken möchte - ich hab gestern abend noch ein bisschen weitergetestet - diesmal hat es 2x ohne Probleme funktioniert. Das heißt also quasi, adss der Fehler nur manchmal auftritt..

"Manchmal" ist jetzt natürlich eine ganz schlechte Zeit, ich konnte auch noch nicht bestimmen unter welchen Umständen dies passiert - da es anscheinend keine Kriterien dafür gibt, wann das SCript abbricht und wann es abbricht.
Chr!s ist offline  
Alt 05.10.2005, 11:20  
Matthias959
Gast
 
Beiträge: n/a
Standard

Vielleicht benötigt das Script zu viel Speicher??
 
Alt 05.10.2005, 11:24  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Hm.. kann es deswegen automatisch abgrbochen werden? Wenn ja, wo kann ich dies nachsehen / mir ausgeben lassen?
Was mir gestern abend noch aufgefallen ist - es passiert manchmal, dass das SCript auch ohne Probleme läuft. Ein anderesmal wieder kommt gleich 2-3x ein Fehler (Fehler = ich bekomme eine Mail zugesendet, das hab ich zum debuggen eingebaut in der Funktion register_shutdown_function) ..

Interessant aber, da ich an jeden Ecken und Enden einen ABbruch des Scripts bemerke und den User als offline setze - passiert der angesprochene Fehler, ist der User trotzdem noch online - man kann weiter Texte schreiben, und dieser wird sogar in die Datenbank eingetragen - das Problem liegt also nicht hier, sondern lediglich an der Chatausgabe..

Ich werd mir vielleicht auch einmal die apache error-logs ansehen müssen, Problem hierbei ist nur, dass ich diese nicht habe - entweder ist das in der PHPini ausgeschalten, oder der Hoster lässt mich diese nich sehen - das einzige was ich ssehe ich der access_log.
Chr!s ist offline  
Alt 05.10.2005, 11:34  
Matthias959
Gast
 
Beiträge: n/a
Standard

echo ini_get("memory_limit");
Gibt dir aus, wie viel RAM du ausnutzen darfst.
 
Alt 05.10.2005, 11:36  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Sowohl Local als auch Master Value sind 8M eingestellt (phpinfo()). Nu, in welcher Weise ist das nun relevant für mein Script? ich könnte nämlich nirgends einen Speicherüberlauf feststellen - und, müsste PHP mir nicht dann wenigstens enien Fehler anzeigen?
Chr!s ist offline  
Alt 05.10.2005, 18:21  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Tschuldigung für meinen Doppelpost.
Matthias959 hat mich auf die richtige Spur gebracht Es liegt wirklich am Speicherverbrauch des Sciprts (vermute ich zumindest, das ist die einzige Erklärung für mich, denn nichteinmal register_shutdown_function() wird noch ausgeführt, bevor das Script beendet wird). Wäre das eine Möglichkeit?

Und meine andere Frage - wie kann ich das Script nun so schreiben, dass es weniger Speicher verbraucht? Und zwar auf Dauer? Evtl. mit &$variable arbeiten?

Usage am Anfang: 698640
Usage am Ende: 8385072 (hier hat das Sciprt abgebrochen)
Da ist ja ein deutlicher Unterschied zu sehen. Wobei anzumerken ist, dass der Speicher sich laufend erhöht..
Chr!s ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Chat PHP-Fortgeschrittene 9 13.02.2010 19:18
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
JavaScript Chat Apfeltyp PHP Tipps 2006 3 28.02.2006 15:46
PHP Chat - was sollte ich beachten? Chr!s PHP Tipps 2005-2 34 23.12.2005 03:02
Ausgabe der Auswahlliste PHP Tipps 2005-2 6 21.09.2005 13:43
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
[Erledigt] Chat, PHP, Flash, XML, MySQL?????? PHP-Fortgeschrittene 2 06.09.2005 08:17
ein chat der die diskussion abspeichert PHP Tipps 2005-2 3 23.08.2005 22:20
[Erledigt] Geteilte Ausgabe an den Browser... PHP-Fortgeschrittene 4 01.07.2005 13:07
Chat System Chat System Beitragsarchiv 3 21.06.2005 17:07
irc chat ständig offen halten (verboten) kid01 Off-Topic Diskussionen 11 30.05.2005 10:01
Chat für Phpkit CMS Beitragsarchiv 6 07.02.2005 14:16
Ausgabe nur dann, wenn htmlspecialchars() verwendet PHP Tipps 2004 1 27.10.2004 21:17
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
was ist mit phpmymazen, php while bricht html ausgabe ab, php ausgabe bricht ab, mymazen php support loggin, mysql query mit kill abbrechen, ini_get(\memory_limit\) local, chatausgabe per php, mymazen php chat fehlerbehebung

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.