Hai all,
Thanks a lot for your inputs and the mod_shmget source code.
I have tried the apr_shm and apr_rmm api's for shared memory and dynamic
allocating space for member elements and was working fine..
I did something like this.
My struture is.
typedef struct { char *name; }shared_struct_t;
Where the shared_struct_t is a array of 100. and the name member element have
to dyanamically malloced on the code flow.
I found it difficult first only by getting a junk of memory from arr_shmcreate
which i was not able to malloc further for space for the member element.
The rmm (relocated memory management is the apache api which helps to manage
any junk of memory). So i first create a Junk of memory which is shared and
then i initialize with the rmm and further i was able to use this Junk of
memory to allocate memory dyanamically to different elements i want..
http://apr.apache.org/docs/apr-util/0.9/group__APR__Util__RMM.html
Thanks,
Jaysingh.
> Date: Thu, 11 Dec 2008 22:16:42 +0100> From: sor...@gmail.com> To:
> modules-...@httpd.apache.org> Subject: Re: Load memory dyanamically using
> handler.> > On Thu, Dec 11, 2008 at 22:08, Sorin Manolache <sor...@gmail.com>
> wrote:> > On Thu, Dec 11, 2008 at 19:55, Ray Morris <supp...@bettercgi.com>
> wrote:> >> 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.> >> > Attached.> > Also, please note that in this example the shared
> data is trivial> enough (an integer) to not use protection against shared
> data> corruption through concurrent access.> > For more complicated
> scenarios, where some sort of protection is> needed, see
> apr_thread_rwlock.h.> > >>> >> On 12/10/2008 02:09:19 AM, Sorin Manolache
> wrote:> >>> On Wed, Dec 10, 2008 at 06:00, Jayasingh Samuel> >>>
> <jayasingh.sam...@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?> >>>> >>>> >>> >>> >>> >> >> >> > --> > 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?> >> > > > -- > 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?
_________________________________________________________________
Chose your Life Partner? Join MSN Matrimony FREE
http://in.msn.com/matrimony