Sorry I always forget this mailing list is "special" and strip my attachments...

Here is a link:
http://pastebin.com/7JpXr22c

On Sun, Jul 3, 2011 at 02:50, Giovanni Giacobbi <giova...@giacobbi.net> wrote:
> Greetings dear devs!
>
> A few days ago I made my first nginx+php-fpm setup, and I soon
> realized some gaps of the current FPM implementation. First of all,
> the lack of documentation, which of course I know I cannot complain
> about, but this forced me to dig into the source code which in turn
> motivated me to write this patch, which is good.
>
> The patch (attached) is for the current PHP 5.3 svn branch, but if you
> are interested in merging it in I will of course port it to 5.4
> branch. I don't see particular reasons to apply it to 5.3, I was
> working on it because I'm planning to use it in my production
> environments. It would be really nice if it could make it in the 5.4
> because it contains also some name changes in the ini file variables
> (with BC of course).
>
> The biggest and most interesting change is for sure the introduction
> of a [defaults] config section. More about this below, first the
> complete changelog of my patch:
>
> Detailed changelog of the patch:
> - Renamed options "pm.status_path", "ping.path", "ping.response" into
> a new logical group "diagnostics", so they are now respectively:
>     "diagnostics.status_path", "diagnostics.ping_path",
> "diagnostics.ping_response".
> - Reordered in a more logical way the pool ini options, from a
> most-likely-to-be-customized first to the least. Usually when you edit
> config file you have big concentration on the first few settings, then
> you go like "blah blah defaults defaults" and so on, so this kind of
> order makes sense.
> - Aligned all the code listings of pool options with the "official"
> order to ease auditing. The "official" order is the one reported in
> the struct definition in fpm_conf.h, which of course is the same as
> the php-fpm.conf.in config template
> - Improved error messages. A better message helps new adopters to get
> started quickly, at the beginning I was really puzzled in front of
> some not very helpful messages.
> - Introduced a new section [defaults] that allows setting default values
> - Dropped restriction of not setting the same value multiple times,
> the last one holds
> - Removed a lot of redundant checks that are logically implied or not
> really required, without reducing the robustness of the program.
> - Improved a lot code readability in some parts, plus added some
> useful comments in the parts that were less easy to understand.
> - Refactored some functions to be shorter from code lines point of
> view, while still doing exactly the same function.
> - Various white space and cosmetic code improvements
> - Moved macros STR2STR, BOOL2STR, and PM2STR from fpm_conf.h to
> fpm_conf.c, no reason to make them public since that's the only file
> using them,
>   so in case we need to change them in the future, there is less risk
> of breaking something which depends on them.
> - Fixed a memory leak in fpm_conf_expand_pool_name() (previous
> dynamically allocated *value was lost)
>
> Now about the new [defaults] section of the config file.
> In the current version if you want to make a decent looking config
> file you have to do something like that:
>
> [global]
> ...your global stuff...
>
> [pool1]
> user = pool1
> listen = ...
> include = pool_defaults.conf
>
> [pool2]
> user = pool1
> listen = ...
> include = pool_defaults.conf
>
> and so on, plus of course you need the external file pool_defaults.conf.
>
> With these changes, you can now do something like this:
>
> [global]
> ...your global stuff...
>
> [defaults]
> ...my defaults valid for every pool...
> pm.max_children = 500
> pm.start_servers = 10
>
> [pool1]
> user = pool1
> listen = ...
>
> [pool2]
> user = pool2
> listen = ...
>
> [pool3]
> user = pool3
> listen = ...
> pm.start_servers = 20
>
>
> There is also a small gain in the parsing time, because defaults are
> propagated in memory instead of parsed multiple times as with the
> include files solution. I have to admit this argument is quite
> irrilevant because it's only a startup time overhead, but it's so much
> more elegant in my eyes.
>
> Also by dropping the constraint of setting strings only once, you can
> override your defaults in the pools, so you can have an access log
> format for all of them except one.
>
>
> Upcoming changes that would follow from me if you accept this patch:
> 1) allow '$pool' variable to be used in the [globals], but this
> requires a bit of restructuring because it needs to be lazy-expanded
> in post process time instead of parsing time.
> 2) possibility to include more than one file per section
>
>
> Looking forward to have some feedback from you :)
>
> Kind regards
>
> --
> Giovanni Giacobbi
>



-- 
Giovanni Giacobbi

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

Reply via email to