[PHP-DEV] 3.1 killed a serious problem+question From: Shane Caraveo (shane <email protected>)
Date: 08/28/98

Well, I've killed my first serious thread related issue, or actualy two.
This is all of course related to the broken systems I develop on :)

The first is that while testing odbc and wsapi, I noticed 3-4 new threads
were being created, each calling my dllmain(), which in turn initialized php
for each thread. Come to discover, ODBC loads a ton of dll's when you
connect to a data source. These dlls in turn start new threads, and since
it's in our process space, calls our dllmain. This would actualy be an
issue with about any extension that uses other dll's. Anyway, the
workaround for that was easy enough. So a lot of overhead saved there.
ODBC still loads about 5 dll's each time a connect is made. Workaround is
to use persistent connections :). ODBC just flies with the server modules
now.

The second was my implementation of loading dll's for each thread. I did a
lot of rewriting in there, and now have saved a bit of code execution, and
got rid of a bunch of exceptions, there as well.

I've also implemented a kind of half-assed way of letting dl's be loaded in
the ini file, and not throw up all over if dl() function loads the same dll.
My fix was to basicly make the functions NOT fail if they discovered the
functions were already in the tables (they just don't add them again), and
to reduce the error levels to notices. What I would like to know is, is the
dl filename saved anywhere that we can check for, if not, is there a quick
and easy way to do that? I know we're saving the handle, can we save the
filename with the handle? I would rather check on the dl's filename than
the functions. That way we could throw up errors if two different dl's are
loading functions with the same names. Oh, I also implemented the ability
to not have to use dl file extensions in the ini file or the dl() function.

Shane

--
PHP Development Mailing List   http://www.php.net/
To unsubscribe send an empty message to php-dev-unsubscribe <email protected>
For help: php-dev-help <email protected>