Nginx + embedded perl, sharing variables across workers
mdounin at mdounin.ru
Thu Apr 7 03:17:59 MSD 2011
On Wed, Apr 06, 2011 at 05:28:51PM -0400, yuri wrote:
> I have written a perl handler that generates a random value and needs to
> maintain the same value consistently across all other perl handlers (as
> there is 1 perl handler per nginx worker) until the workers are
> I've attempted to do so by issuing $r->variable('varname', $rand) to no
> avail - is it impossible to set a variable defined in nginx.conf and
> have the new setting affect any further reads of that variable from
> other workers?
> Which options do I have if I'd like to share $varname across multiple
> perl handlers?
Request variables ($r->variable) are per-request, not even
per-worker. Normal perl variables are per worker as worker uses
one perl interpreter.
To share data between multiple workers use normal IPC facilities
provided by perl (but keep in mind blocking for too long isn't
good idea). Something like IPC::Shareable / IPC::Mmap::Share
should do the trick.
More information about the nginx