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:[EMAIL PROTECTED] 
> 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
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to