auto_globals_jit and register_argc_argv disconnect

php.internals

Rasmus Lerdorf

20 years ago
Our default config has both auto_globals_jit and register_argc_argv enabled. However, having register_argc_argv enabled disables auto_globals_jit which carries a really high WTF factor. We can fix this by shuffling things around a bit and making 2 calls to php_build_argv. One to populate the global argc/argv in cli mode and another to populate the _SERVER version from either php_auto_globals_create_server or php_register_server_variables depending on how we do the checks in php_hash_environment. Then to connect the references we'd need a hash lookup in php_build_argv. It gets a bit messy, but I don't think the current situation makes any sense at all. Anybody see a clean way out of this? -Rasmus

Zeev Suraski

20 years ago
At 18:10 15/03/2006, Rasmus Lerdorf wrote:
>Our default config has both auto_globals_jit and register_argc_argv >enabled. However, having register_argc_argv enabled disables >auto_globals_jit which carries a really high WTF factor.
I don't think WTF terminology fits here, as it's an extreme case of performance optimization and doesn't affect functionality. Not exactly the interest of the average (and even advanced) user. It's end-user (developer) transparent. Irregardless, I actually think it makes perfect sense that if you ask PHP to do stuff with GET / POST variables on every request (register_argc_argv), it wouldn't make sense to JIT them. So if we're talking about WTF, I don't see how it is an issue. Are you also expecting to see a performance boost from that case? Zeev

Rasmus Lerdorf

20 years ago
Zeev Suraski wrote:
> At 18:10 15/03/2006, Rasmus Lerdorf wrote: >> Our default config has both auto_globals_jit and register_argc_argv >> enabled. However, having register_argc_argv enabled disables >> auto_globals_jit which carries a really high WTF factor. > > I don't think WTF terminology fits here, as it's an extreme case of > performance optimization and doesn't affect functionality. Not exactly > the interest of the average (and even advanced) user. It's end-user > (developer) transparent. Irregardless, I actually think it makes > perfect sense that if you ask PHP to do stuff with GET / POST variables > on every request (register_argc_argv), it wouldn't make sense to JIT them.
We don't jit GET/POST. -Rasmus

Zeev Suraski

20 years ago
At 16:07 20/03/2006, Rasmus Lerdorf wrote:
>Zeev Suraski wrote: >>At 18:10 15/03/2006, Rasmus Lerdorf wrote: >>>Our default config has both auto_globals_jit and >>>register_argc_argv enabled. However, having register_argc_argv >>>enabled disables auto_globals_jit which carries a really high WTF factor. >>I don't think WTF terminology fits here, as it's an extreme case of >>performance optimization and doesn't affect functionality. Not >>exactly the interest of the average (and even advanced) user. It's >>end-user (developer) transparent. Irregardless, I actually think >>it makes perfect sense that if you ask PHP to do stuff with GET / >>POST variables on every request (register_argc_argv), it wouldn't >>make sense to JIT them. > >We don't jit GET/POST.
OK, I agree with you, the correlation is a weaker than I thought (didn't recall I didn't get around to JIT'ing get/post). If we were to do it it probably makes sense to just keep a global reference to argv/argc, and move the code that puts them into _SERVER to php_register_server_variables(). Should be pretty clean, no? Zeev

Dmitry Stogov

20 years ago
Hi Zeev,
> -----Original Message----- > From: Zeev Suraski [mailto:zeev@zend.com] > Sent: Monday, March 20, 2006 6:20 PM > To: Rasmus Lerdorf > Cc: internals > Subject: Re: [PHP-DEV] auto_globals_jit and > register_argc_argv disconnect > > > At 16:07 20/03/2006, Rasmus Lerdorf wrote: > >Zeev Suraski wrote: > >>At 18:10 15/03/2006, Rasmus Lerdorf wrote: > >>>Our default config has both auto_globals_jit and > >>>register_argc_argv enabled. However, having register_argc_argv > >>>enabled disables auto_globals_jit which carries a really > high WTF factor. > >>I don't think WTF terminology fits here, as it's an extreme case of > >>performance optimization and doesn't affect functionality. Not > >>exactly the interest of the average (and even advanced) user. It's > >>end-user (developer) transparent. Irregardless, I actually think > >>it makes perfect sense that if you ask PHP to do stuff with GET / > >>POST variables on every request (register_argc_argv), it wouldn't > >>make sense to JIT them. > > > >We don't jit GET/POST. > > OK, I agree with you, the correlation is a weaker than I thought > (didn't recall I didn't get around to JIT'ing get/post). If we were > to do it it probably makes sense to just keep a global reference to > argv/argc, and move the code that puts them into _SERVER to > php_register_server_variables(). Should be pretty clean, no?
This is already done near in the same way (in HEAD and PHP_5_1). Thanks. Dmitry.

Rasmus Lerdorf

20 years ago
Zeev Suraski wrote:
> At 16:07 20/03/2006, Rasmus Lerdorf wrote: >> Zeev Suraski wrote: >>> At 18:10 15/03/2006, Rasmus Lerdorf wrote: >>>> Our default config has both auto_globals_jit and register_argc_argv >>>> enabled. However, having register_argc_argv enabled disables >>>> auto_globals_jit which carries a really high WTF factor. >>> I don't think WTF terminology fits here, as it's an extreme case of >>> performance optimization and doesn't affect functionality. Not >>> exactly the interest of the average (and even advanced) user. It's >>> end-user (developer) transparent. Irregardless, I actually think it >>> makes perfect sense that if you ask PHP to do stuff with GET / POST >>> variables on every request (register_argc_argv), it wouldn't make >>> sense to JIT them. >> >> We don't jit GET/POST. > > OK, I agree with you, the correlation is a weaker than I thought (didn't > recall I didn't get around to JIT'ing get/post). If we were to do it it > probably makes sense to just keep a global reference to argv/argc, and > move the code that puts them into _SERVER to > php_register_server_variables(). Should be pretty clean, no?
Pretty much what we did already. You are running about a week behind. ;) -Rasmus