RE: [PHP-DEV] php6: input encoding, filter and making JIT really JIT
| From: | Dmitry Stogov | Date: | Mon, 18 Dec 2006 20:39:08 +0000 |
| Subject: | RE: [PHP-DEV] php6: input encoding, filter and making JIT really JIT | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-27076@lists.php.net to get a copy of this message | ||
The second solution has a lot of advantages. And I think it is better even
if it will little bit slower.
I think it can be implemented using overloaded arrays.
Thanks. Dmitry.
> -----Original Message-----
> From: Pierre [mailto:pierre.php@gmail.com]
> Sent: Friday, December 15, 2006 12:00 AM
> To: PHP internals
> Cc: Zeev Suraski; Andi Gutmans; Dmitry Stogov; Rasmus
> Lerdorf; Ilia Alshanetsky
> Subject: [PHP-DEV] php6: input encoding, filter and making
> JIT really JIT
>
>
> Hello,
>
> Yesterday, Ilia, Andrei and I discussed the possible
> solutions to solve the input encoding in php6 (unicode). I
> will try to describe them here.
>
> I do not go too deep in the details, the goal is to choose
> one solution and then propose a patch to test. Our preference
> goes to the solution #2.
>
> --
> Solution #1:
> ------------
> The idea here is to detect encoding, encode and register the
> variable during the request initialization (before the script
> gets the hand). Besides the encoding detection, it is how it
> works in the actual implementation (all php versions).
>
> * Init
> - Parse the request into an array.
> - locate _charset_ or use unicode.request_encoding
> - filter/decode/register the variable like it is done now
>
> * Runtime
> Just like now, the auto_globals (with or without jit) are
> declared and ready to be used.
>
> This solution has one advantage, it requires only a few
> changes in the engine. The request processing functions need
> to be changed to detect the encoding.
>
> The main disadvantages are:
> - the lack of flexibility, encoding must be set before the script gets
> the hand, using vhost config or htaccess
> - the possible bad encoding detection will force the user to manually
> parse the raw request (when available).
>
>
> Solution #2: add (true) JIT support for GET/POST/COOKIE/...
> ------------
> Instead of doing all the precessing during the init phase, it
> will be done on demand when a input variable is requested, at runtime.
>
> * Init
> - don't parse the request but simply store it for later processing
>
> * Runtime
> - when a input variable is fetched:
> - encoding is defined using unicode.request_encoding
> - filter/decode/register the complete array (post,get,...)
>
> The way JIT works has to be changed. It has to process the
> data at runtime instead of register them at compile time.
> This is the only way to be sure that the users has set the
> input encoding correctly (or has the opportunity to set it).
>
> The main advantage of this solution is the absence of magic
> for the user. The encoding detection can be checked and/or
> set in time by the user before the input processing, it is
> safe and flexible.
>
> I would also suggest to add a function:
> filter_input_encoding($type) to define the encoding type at
> runtime instead of using ini_set (which is often disabled).
>
> There is no real technical disadvantages but requires more
> work and changes in the engine. But these changes will also
> bring some more performance improvements (if (0) $t =
> $_ENV['foo']; will not trigger jit).
>
> --
>
> I would like to hear your ideas, opinions and comments.
> Especially about the possible changes in the engine. Feel
> free to ask more details if my explanations were unclear :)
>
> Regards,
> --Pierre
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>