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