httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ray Morris <supp...@bettercgi.com>
Subject Re: Load memory dyanamically using handler.
Date Thu, 11 Dec 2008 18:55:49 GMT
On 12/10/2008 02:09:19 AM, Sorin Manolache wrote:

> I would propose the following approach:
> 
> Hook post_config. This one is executed once by the parent process
> before any child is spawned. Therefore, any resource opened there is
> inherited by all child processes. Thus, I would create _shared_ 
> memory
> structures (see apr_shm.h, not malloc).
... 
> Next, in child_init, _attach_ to the shared memory segment (see
... 
> I hope this helps. You can contact me for a code sample 
> if you want.  I don't have it handy for the moment, but 
> I can find  it.

   I've seen several variations of this same
question posted, so any sample code you may be 
able to locate may be very helpful to a lot of 
people.   I'm sure I'll need it at some point, 
so I'd file it for future use.  With your permission 
I'd post it somewhere for Google to find when people 
want to know about ways of sharing data in Apache.
--
Ray B. Morris
support@bettercgi.com

Strongbox - The next generation in site security:
http://www.bettercgi.com/strongbox/




On 12/10/2008 02:09:19 AM, Sorin Manolache wrote:
> On Wed, Dec 10, 2008 at 06:00, Jayasingh Samuel
> <jayasingh.samuel@hotmail.com> wrote:
> >
> >
> > I have 100's of files stored in different directories and i load 
> all
> these in the memory in arrays and hash table. and i want to reload 
> the
> memory automatically using some handlers. When i do this in only the
> particular child thread is having the updated one and the other
> request are showing me the old Datas.
> >
> > 1. The shared memory to store all the 100's of files in array and
> hash table which is dynamically malloced and stored will be too 
> costly
> also the synchronization.
> > IS there any other way we can overcome this.
> >
> > 2. Is there any way a handler can directly access the  parent
> process, updating the memory and removing the child process which has
> the old Data and spawning the new child process. Can we use the
> mod_balancing technique of blocking the request to the server and 
> then
> update the parent and kill the child and spawn new childrens with the
> updated memory.
> >
> > Please guide me with you ideas.
> 
> Killing processes at each update is not efficient.
> 
> I would propose the following approach:
> 
> Hook post_config. This one is executed once by the parent process
> before any child is spawned. Therefore, any resource opened there is
> inherited by all child processes. Thus, I would create _shared_ 
> memory
> structures (see apr_shm.h, not malloc).
> 
> Beware, post_config is run every time the server configuration is
> reloaded. Therefore, such shared memory structures would be created
> after each config reload. In order to avoid eating up the system's
> resources, you'll have to make sure that each created structure is
> also destroyed. In order to do this, _register_ a function (see
> apr_pool_register_cleanup) that is called when the conf pool is
> destroyed. This function would destroy the shared memory structures.
> 
> Next, in child_init, _attach_ to the shared memory segment (see
> apr_shm.h). From then on, the shared memory structures are shared
> among all child processes. Each change is visible instantly in all
> processes.
> 
> Obviously, think of synchronisation. When not every atomic change
> results in a consistent state of the shared data, you'll have to
> protect the shared data with mutexes. See apr_thread_mutex.h and
> apr_thread_rwlock.h and maybe others. Mutexes should be created in
> post_config too.
> 
> I hope this helps. You can contact me for a code sample if you want. 
> I
> don't have it handy for the moment, but I can find it.
> 
> S
> 
> 
> -- 
> A: Because it reverses the logical flow of conversation.
> Q: Why is top-posting frowned upon?
> A: Top-posting.
> Q: What is the most annoying thing in e-mail?
> 
> 



Mime
View raw message