phpbar.de logo

Mailinglisten-Archive

[php] ignore_user_abort()

[php] ignore_user_abort()

Ulf Wendel uw_(at)_netuse.de
Mon, 19 Feb 2001 11:14:04 +0100


"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.

> > 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()
> >
> > 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.
> 
> Soll heißen, entweder man gibt ein Argument an oder man läßt es bleiben.
> Das hat aber mit Booleans herzlich wenig zu tun, den die Settings bei
> ignore_user_abort sollten Integer sein und die sind halt mal nicht mit
> TRUE und FALSE zu füttern.

Das verstehe ich nicht. Der Prototyp weißt boolean aus:

2161 /* {{{ proto int ignore_user_abort(boolean value)
2162    Set whether we want to ignore a user abort event or not */

Die Funktion konvertiert dann das Argument in das, was intern als
Boolean gewertet wird, entnimmt der Struktur den eigentlichen Wert und
wandelt diesen in einen unsigned char.

http://lxr.php.net/source/Zend/zend.h#137
137 typedef unsigned char zend_bool;

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.

Ulf

-- 
Ulf Wendel, NetUSE AG Siemenswall, D-24107 Kiel
Tel: +49 431 386 436 00, Fax: +49 431 386 435 99


php::bar PHP Wiki   -   Listenarchive