hi,

It is nothing special, you have to use .txt for the attachment.

It is also slightly better to create a feature requrest/report at
bugs.php.net and attach the patch to it, so it won't get lost into the
MLs archives :)

Thanks for your work!

Cheers,

On Sun, Jul 3, 2011 at 3:16 PM, Giovanni Giacobbi <giova...@giacobbi.net> wrote:
> 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
>
>



-- 
Pierre

@pierrejoye | http://blog.thepimp.net | http://www.libgd.org

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

Reply via email to