Mailinglisten-Archive |
Ulf Wendel wrote: > > "Egon Schmid (_(at)_vacation)" schrieb: > > > > Ulf Wendel wrote: > > > > > > Alexander Ott schrieb: > > > > Ich habe ein kleines Problem mit der Funktion > > > > ignore_user_abort(). Welchen Parameter muss man da > > > > übergeben, wenn man will, dass das Script weiterläuft, wenn der > > > > User den Browser schliesst, oder eine andere URL aufsucht. > > > > > > > > Aus dem Handbuch wird man nicht schlau, dort wird nur > > > > beschrieben, dass man 0 für normal, 1 für Abort und > > > > 2 für Timeout übergeben soll ????? > > > > > > Generell bei solchen Fragen: > > > > > > [1] http://www.zugeschaut-und-mitgebaut.de/php/i.html > > > [2] > > > http://www.zugeschaut-und-mitgebaut.de/php/function.ignore_user_abort.html > > > [3] http://lxr.php.net/source/php4/ext/standard/basic_functions.c#2159 > > > > Hi Ulf, leider helfen bei solchen Fragen die Funktionstabellen von > > Hartmut nicht wirklich weiter. > > Manchmal schon, zumindest ist es geeignet die erste Frage zu > beantworten, was an ignore_user_abort() zu übergeben ist. Ob es dann > hinterher das tut, was es soll, steht auf einem anderem Blatt. Deshalb hab ich auch gesagt, man soll halt selber experimentieren, ob das was in der Doku steht und was in den Funktionstabellen von Hartmut steht, auch stimmt. Bei mehr als 2200 Funktionen könnten durchaus Fehler in der einen oder anderen Fassung liegen. Die Dokumentation und die Funktionsprototypen sind in Wirklichkeit ja kein C-Programmcode, sondern reiner ASCII-Text. > > > 2173 case 1: > > > 2174 if (zend_get_parameters_ex(1, &arg) == FAILURE) { > > > 2175 RETURN_FALSE; > > > 2176 } > > > 2177 convert_to_boolean_ex(arg); > > > > > > Ein Übergabewert? convert_to_boolean() Das macht mich halt auch stutzig. Wenn man die Werte 0, 1 oder 2 übergibt und dann nach Boolean konvertiert, dann kann nichts vernünftiges rauskommen. > > > 2178 PG(ignore_user_abort) = (zend_bool) Z_LVAL_PP(arg); > > > 2179 break; > > > 2180 default: > > > 2181 WRONG_PARAM_COUNT; > > > 2182 break; > > > ... > > > > > > Die Funktion frißt nichts anderes als einen Boolean. In PHP stehen Dir > > > zur einfachen Arbeit mit Booleans die vordefinierten Konstanten true und > > > false zur Verfügung. Fazit: Beides, die Doku und die Funktionstabellen, lügen. Wenn ich das entsprechende Kapitel im Handbuch anschaue, dann steht es dort aber richtig. Der Typ Boolean wurde ja erst in Version 4 eingeführt und stand früher als Integer (0 oder ungleich 0) zur Verfügung. > Damit ist es - wie üblich - egal, was ich von meinem PHP Skript aus an > die Funktion übergebe, es wird als Boolean gewertet. Ob dies adäquat ist > für die Aufgabe, oder ob es nicht besser ein Integer sein sollte, > darüber will ich kein Urteil fällen. Wenn die Dokumentation aus > didaktischen Gründen einen Integer aufweist, so empfinde ich dies als > inkonsistent. Schließlich kann die aktuelle Implementation nur > "an"/"aus" verarbeiten. Es sind keine didaktischen Gründe sondern historische. Früher (PHP 3) gab es kein Boolean und das Handbuch wurde eben für die Version 3 geschrieben. So wie im Handbuch beschrieben, werden nur die Zahlen 0 oder ungleich 0 erwartet und nicht, die Zahlen 0, 1 oder 2. In der Version 4 müßte also auch ignore_user_abort (TRUE) oder ignore_user_abort (FALSE) möglich sein. ignore_user_abort() sollte dann das frühere Setting zurückliefern. -Egon -- SIX Offene Systeme GmbH · Stuttgart - Berlin Sielminger Straße 63 · D-70771 Leinfelden-Echterdingen Fon +49 711 9909164 · Fax +49 711 9909199 http://www.six.de Besuchen Sie uns auf der CeBIT 2001, Halle 6, Stand F62/4
php::bar PHP Wiki - Listenarchive