mod_perl logo perl icon
previous page: Apache2::Response - Perl API for Apache HTTP request response methodspage up: mod_perl 2.0 APInext page: Apache2::ServerUtil - Perl API for Apache server record utils

Apache2::ServerRec - Perl API for Apache server record accessors






The mod_perl Developer's Cookbook

The mod_perl Developer's Cookbook

By Geoffrey Young, Paul Lindner, Randy Kobes
mod_perl Pocket Reference

mod_perl Pocket Reference

By Andrew Ford
Writing Apache Modules with Perl and C

Writing Apache Modules with Perl and C

By Lincoln Stein, Doug MacEachern
Embedding Perl in HTML with Mason

Embedding Perl in HTML with Mason

By Dave Rolsky, Ken Williams
mod_perl2 User's Guide

mod_perl2 User's Guide

By Stas Bekman, Jim Brandt
Practical mod_perl

Practical mod_perl

By Stas Bekman, Eric Cholet


Table of Contents

Synopsis

  use Apache2::ServerRec ();
  
  $error_fname = $s->error_fname();
  
  $is_virtual = $s->is_virtual();
  
  $keep_alive         = $s->keep_alive();
  $keep_alive_max     = $s->keep_alive_max();
  $keep_alive_timeout = $s->keep_alive_timeout();
  
  $limit_req_fields    = $s->limit_req_fields();
  $limit_req_fieldsize = $s->limit_req_fieldsize();
  $limit_req_line      = $s->limit_req_line();
  
  $path = $s->path();
  
  $hostname = $s->server_hostname();
  $port     = $s->port();
  
  $server_admin = $s->server_admin();
  
  $proc = $s->process();
  
  $timeout  = $s->timeout();
  $loglevel = $s->loglevel();
  
  my $server = Apache2::ServerUtil->server;
  my $vhosts = 0;
  for (my $s = $server->next; $s; $s = $s->next) {
      $vhosts++;
  }
  print "There are $vhosts virtual hosts";


TOP

Description

Apache2::ServerRec provides the Perl API for Apache server_rec object.

Apache2::ServerUtil provides an extra functionality.



TOP

API

Apache2::ServerRec provides the following functions and/or methods:



TOP

error_fname

Get/set the ErrorLog file value (e.g. logs/error_log)

  $error_fname      = $s->error_fname();
  $prev_error_fname = $s->error_fname($new_error_fname);


TOP

is_virtual

Test whether $s is a virtual host object

  $is_virtual = $s->is_virtual();

Example:

  print "This is a virtual host" if $s->is_virtual();


TOP

keep_alive

Get/set the KeepAlive setting, which specifies whether Apache should accept more than one request over the same connection from the same client.

  $keep_alive      = $s->keep_alive();
  $prev_keep_alive = $s->keep_alive($new_keep_alive);


TOP

keep_alive_max

Get/set the MaxKeepAliveRequest setting, which specifies the maximum number of requests Apache will serve over a KeepAlive connection.

  $keep_alive_max      = $s->keep_alive_max();
  $prev_keep_alive_max = $s->keep_alive_max($new_keep_alive_max);


TOP

keep_alive_timeout

Get/set the KeepAliveTimeout setting (in microsecs), which specifies how long Apache will wait for another request before breaking a KeepAlive connection.

  $keep_alive_timeout      = $s->keep_alive_timeout();
  $prev_keep_alive_timeout = $s->keep_alive_timeout($new_timeout);


TOP

limit_req_fields

Get/set limit on number of request header fields

  $limit_req_fields      = $s->limit_req_fields();
  $prev_limit_req_fields = $s->limit_req_fields($new_limit_req_fields);


TOP

limit_req_fieldsize

Get/set limit on size of any request header field

  $limit_req_fieldsize = $s->limit_req_fieldsize();
  $prev_limit          = $s->limit_req_fieldsize($new_limit);


TOP

limit_req_line

Get/set limit on size of the HTTP request line

  $limit_req_line      = $s->limit_req_line();
  $prev_limit_req_line = $s->limit_req_line($new_limit_req_line);


TOP

loglevel

Get/set the LogLevel directive value

  $loglevel      = $s->loglevel();
  $prev_loglevel = $s->loglevel($new_loglevel);

For example, to set the LogLevel value to info:

  use Apache2::Const -compile => qw(LOG_INFO);
  $s->loglevel(Apache2::Const::LOG_INFO);


TOP

next

The next server record in the list (if there are vhosts)

  $s_next = $s->next();

For example the following code traverses all the servers, starting from the base server and continuing to vhost servers, counting all available vhosts:

  use Apache2::ServerRec ();
  use Apache2::ServerUtil ();
  my $server = Apache2::ServerUtil->server;
  my $vhosts = 0;
  for (my $s = $server->next; $s; $s = $s->next) {
      $vhosts++;
  }
  print "There are $vhosts virtual hosts";


TOP

path

Get/set pathname for the ServerPath setting

  $path      = $s->path();
  $prev_path = $s->path($new_path);


TOP

port

Get/set the port value

  $port      = $s->port();
  $prev_port = $s->port($new_port);


TOP

process

The process this server is running in

  $proc = $s->process();


TOP

server_admin

Get/set the ServerAdmin value

  $server_admin      = $s->server_admin();
  $prev_server_admin = $s->server_admin($new_server_admin);


TOP

server_hostname

Get/set the ServerName value

  $server_hostname      = $s->server_hostname();
  $prev_server_hostname = $s->server_hostname($new_server_hostname);


TOP

timeout

Get/set the timeout (TimeOut) (in microsecs), which Apache will wait for before it gives up doing something

  $timeout      = $s->timeout();
  $prev_timeout = $s->timeout($new_timeout);

Let us repeat again: the timeout values is microseconds. For example to set the timeout to 20 secs:

  $s->timeout(20_000_000);


TOP

Notes



TOP

Limited Functionality under Threaded MPMs

Note that under threaded MPMs, some of the read/write accessors, will be able to set values only before threads are spawned (i.e. before the ChildInit phase). Therefore if you are developing your application on the non-threaded MPM, but planning to have it run under threaded mpm, you should not use those methods to set values after the ChildInit phase.

The affected accessor methods are marked as such in their respective documentation entries.



TOP

Unsupported API

Apache2::ServerRec also provides auto-generated Perl interface for a few other methods which aren't tested at the moment and therefore their API is a subject to change. These methods will be finalized later as a need arises. If you want to rely on any of the following methods please contact the the mod_perl development mailing list so we can help each other take the steps necessary to shift the method to an officially supported API.



TOP

addrs

Get the addrs value

  $addrs = $s->addrs();

META: this methods returns a vhost-specific Apache2::ServerAddr object, which is not implemented at the moment. See the struct server_addr_rec entry in httpd-2.0/include/httpd.h for more information. It seems that most (all?) of the information in that record is available through other APIs.



TOP

lookup_defaults

Get the lookup_defaults value. MIME type info, etc., before we start checking per-directory info.

  $lookup_defaults = $s->lookup_defaults();


TOP

module_config

Get config vector containing pointers to modules' per-server config structures.

  $module_config = $s->module_config();


TOP

names

Get/set the value(s) for the ServerAlias setting

  $names      = $s->names();
  $prev_names = $s->names($new_names);

META: we don't have APR::ArrayHeader yet



TOP

wild_names

Wildcarded names for ServerAlias servers

  $wild_names      = $s->wild_names();
  $prev_wild_names = $s->wild_names($new_wild_names);

META: we don't have APR::ArrayHeader yet



TOP

See Also

mod_perl 2.0 documentation.



TOP

Copyright

mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.



TOP

Authors

The mod_perl development team and numerous contributors.






TOP
previous page: Apache2::Response - Perl API for Apache HTTP request response methodspage up: mod_perl 2.0 APInext page: Apache2::ServerUtil - Perl API for Apache server record utils