Re: cvs: php4 /ext/xml xml.c
| From: | Moriyoshi Koizumi | Date: | Sun, 15 Jun 2003 14:59:00 +0000 |
| Subject: | Re: cvs: php4 /ext/xml xml.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-21730@lists.php.net to get a copy of this message | ||
"Rob Richards" <rrichards@ctindustries.net> wrote:
> From: Moriyoshi Koizumi
>
> > Indeed. But as long as libxml allocators are designed to be initialised
> > only in the xml extension, the order could be a problem in which those
> > extensions are initialised on startup. Maybe I can make clones of the
> > xmlMemSetup() code and paste them to the PHP_MINIT_FUNCTION() of every
> > extension which uses libxml, but it hardly looks like a better solution.
> > I'd asked you for more a practical option :)
>
> We had originally looked at implementing that xml_parser_inited stuff, but
> the way it was implemented was basically duplicating the same initialization
> code everywhere.
I wasn't aware of being the third person here..
> What would be nice would to have a centralized function (it would have to
> live outside all the libxml based extensions that every extension could call
> on MINIT. It would be re-entrant safe to avoid corruption of globals. Then
> the extension could just call the function during its MINIT (as this would
> also make it extremely easy to change initialization routines to correspond
> with any changes in libxml or add any initialization that would need to take
> place).
>
> This probably does have some draw backs, but it would be ideal.
It looks like we(?) need a functionality in TSRM similar to pthread_once(),
with which we could make sure that the initialisation routine with
an unique integer ID is called only once in the lifetime of the process.
As for Win32, I think it's possible to emulate it with TLS stuff though
the API doesn't provide a specific function dedicated to that
functionality.
Moriyoshi