On Mon, 30 Sep 2002 22:50:13 +0100, Steve Kemp wrote: > Hi All, > > I've written a module for Apache which will limit the > amount of data the server may transfer in a given time > period. (OK that's a simplistic overview anyway ;) > > To do this I make use of the information gathered by > mod_status, and when the data transferred goes over a > given threshhold I cause the server to simply respond > to all requests with a redirect. > > This works fine on a per-server basis. > > I'd like to re-code my module to work with virtual > hosts; so I believe I need some way of keeping track of > the size of data which has been transferred on a > per-vhost basis. > > (Or failing that find another module, like mod_status, > which contains the necessary magic which I can piggy back > upon). > > Is this possible, and if so does anybody have a pointer > to a method I could use? > > All of the modules I've studied seem to manage to operate > without having per vhost static data which makes me think > either I'm missing something obvious, or it's not possible. > Either way I'd love to be enlightened. >
it's hard, as there is no way 'in-process' to manage that information without using a mutex lock to protect the data structure (imagine two processes/threads serving the same URL for a virtual host) or having some kind per-thread per-vhost structure which your module would summarize. mod-status avoids a lock as each thread writes it's server stats to a thread-specifc area which mod-status sums up. > It does cross my mind that the forking may rule out persistant > static data of the kind I want; but temporary files could be used > I guess.. > > For those who might be interested my code is online at: > http://www.steve.org.uk/Software/mod_curb/ > > (Just be gentle; it's my first module ;) > > Steve > --- > www.steve.org.uk
