RE: [PHP-DEV] MINIT or RINIT
| From: | Sam Liddicott | Date: | Tue, 23 Apr 2002 15:18:47 +0000 |
| Subject: | RE: [PHP-DEV] MINIT or RINIT | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-83217@lists.php.net to get a copy of this message | ||
It seems like if I use zend_register_internal_class then I can't make use of
the .function table of my class entry because zend_register_internal class
null's this out.
Is there an entirely good reason for this?
I want the internal class to have its functions registered seperatly with
zend_hash_add(class_entry.function_table,....
But I don't want the class damaged at RSHUTDOWN.
Do these desires conflict?
At least I will have to reproduce much of zend_register_internal_class but
preserve the function table.
Are there any other side effects of being ZEND_INTERNAL_CLASS instead of
ZEND_USER_CLASS? Perhaps it will be safer to register as ZEND_USER_CLASS in
RINIT instead of ZEND_INTERNAL_CLASS in MINIT?
Sam
> -----Original Message-----
> From: Sam Liddicott
> Sent: 23 April 2002 15:50
> To: Rasmus Lerdorf; Sam Liddicott
> Cc: PHP Developers Mailing List
> Subject: RE: [PHP-DEV] MINIT or RINIT
>
>
>
>
> > -----Original Message-----
> > From: Rasmus Lerdorf [mailto:rasmus@lerdorf.ca]
> > Sent: 23 April 2002 11:30
> > To: Sam Liddicott
> > Cc: PHP Developers Mailing List
> > Subject: Re: [PHP-DEV] MINIT or RINIT
> >
> >
> > Well, where are you storing them? Make sure they are not in
> > memory that
> > gets cleaned on a per-request basis. ie. do your own
> > malloc() in MINIT
> > and free() in MSHUTDOWN.
>
> This means my class must be declared as ZEND_INTERNAL_CLASS then?
> Are there any other side effects to doing this?
>
> Must I un-register my classes during shutdown? It seems zend
> does that for me.
>
> I've made these changes, to use ZEND_INTERNAL_CLASS and
> malloc and strdup instead of emalloc and estrdup but now zend
> hangs on shutdown.
>
> It seems to come round (under gdb) somewhere in _efree, under
> zend_hash_destroy under destroy_zend_class
> So it sounds like something I did wrong...
>
> Sam
>