Re: global variable use in mod_proxy_http.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks to Sander & André, I clearly understood why it happened and how
I can get it over.

Now I am looking at an example,.mod_example_ipc.c, to use a shared
memory space.

Thanks again.

On Wed, Jun 24, 2009 at 5:31 PM, André Warnier<aw@xxxxxxxxxx> wrote:
> Brian Kim wrote:
>>
>> Hi. All.
>>
>> In mod_proxy_http.c, I globally declared a variable, like unsiged int
>> count = 0;
>>
>> And I make it increase whenever the proxy gets a new http request.
>>
>> I expect it increases like 1, 2, 3, 4,... but it is always same 1.
>>
>> Does anydoby know why this happens? How can I use a global variable in
>> mod_proxy_http?
>>
> Not a simple answer, but read this :
> http://marc.info/?l=apache-httpd-users&m=124467015611975&w=2
>
> The basic point is : when it starts, Apache is a single process.  That one
> loads mod_proxy, with your variable initialised to 0.
> Then that main Apache forks into children.  Each child is an exact copy,
> thus also with the variable = 0.
> The main Apache does not serve requests, so its copy always remains 0.
> But it distributes requests, 1 per child, as they come in.
> So probably your first request gets handled by child #1.  It serves the
> request, and increments the variable, which for this child is now 1.
> Then your next request comes in, and is handled by child #2.
> Its variable is still 0.  So it serves the request and increments the
> variable.
> Then your next request comes in and is served by child #3.
> And so on.
> Until... enough requests have come in, that a child that has been used
> before, gets re-used.  Then the variable is at 1, and now becomes 2.
> But only in that child.
> And so on.
>
> Got it ?
>
> If you start your Apache with a maximum of 3 children e.g., then after 4
> requests you are guaranteed to see a 2.
>
> Morality : you have to find a place to store your counter, that is common to
> all children (or threads).  And of course synchronise access to it.
>
>
> ---------------------------------------------------------------------
> The official User-To-User support forum of the Apache HTTP Server Project.
> See <URL:http://httpd.apache.org/userslist.html> for more info.
> To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
>  "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
> For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx
>
>

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux