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:
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) ..
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 '';
}
?>
An was liegt das, dass das Script eifnach so (ohne Felermeldung) abbricht? (PHP 4.4.0, error_reporting(E_ALL), display_errors auf true) ..
Kommentar