34#ifndef MC_DEFAULT_SERVER_PORT
35#define MC_DEFAULT_SERVER_PORT 11211
39#ifndef MC_DEFAULT_SERVER_MIN
40#define MC_DEFAULT_SERVER_MIN 0
43#ifndef MC_DEFAULT_SERVER_SMAX
44#define MC_DEFAULT_SERVER_SMAX 1
47#ifndef MC_DEFAULT_SERVER_TTL
48#define MC_DEFAULT_SERVER_TTL apr_time_from_sec(15)
51module AP_MODULE_DECLARE_DATA socache_memcache_module;
73 return "List of server names required to create memcache socache.";
82 const char *
namespace,
94 &socache_memcache_module);
109 "Failed to create Memcache Object of '%d' size.",
126 "Failed to Parse memcache Server: '%s'", split);
132 "Failed to Parse Server, "
133 "no hostname specified: '%s'", split);
150 "Failed to Create memcache Server: %s:%d",
158 "Failed to Add memcache Server: %s:%d",
167 ctx->taglen = strlen(
ctx->tag) + 1;
184 const unsigned char *
id,
unsigned int idlen,
199 const unsigned char *
id,
unsigned int idlen,
201 unsigned char *
ucaData,
unsigned int nData,
222 "scache_mc: error setting key '%s' "
223 "with %d bytes of data",
buf, nData);
231 const unsigned char *
id,
unsigned int idlen,
250 "scache_mc: 'retrieve' FAIL");
256 "scache_mc: 'retrieve' OVERFLOW");
267 const unsigned char *
id,
281 "scache_mc: error deleting key '%s' ",
308 ap_rprintf(
r,
"<b>Version:</b> <i>%s</i> [%u bits], PID: <i>%u</i>, Uptime: <i>%u hrs</i> <br />\n",
310 ap_rprintf(
r,
"<b>Clients::</b> Structures: <i>%u</i>, Total: <i>%u</i>, Current: <i>%u</i> <br />\n",
311 stats->connection_structures,
stats->total_connections,
stats->curr_connections);
314 ap_rprintf(
r,
"<b>CPU::</b> System: <i>%u</i>, User: <i>%u</i> <br />\n",
315 (
unsigned)
stats->rusage_system, (
unsigned)
stats->rusage_user );
316 ap_rprintf(
r,
"<b>Cache::</b> Gets: <i>%u</i>, Sets: <i>%u</i>, Hits: <i>%u</i>, Misses: <i>%u</i> <br />\n",
325 ap_rprintf(
r,
"Version: %s [%u bits], PID: %u, Uptime: %u hrs %s\n",
327 ap_rprintf(
r,
"Clients:: Structures: %d, Total: %d, Current: %u %s\n",
328 stats->connection_structures,
stats->total_connections,
stats->curr_connections,
br);
332 (
unsigned)
stats->rusage_system, (
unsigned)
stats->rusage_user ,
br);
333 ap_rprintf(
r,
"Cache:: Gets: %u, Sets: %u, Hits: %u, Misses: %u %s\n",
379 &socache_memcache_module);
383 " has wrong format",
NULL);
388 " can only be 0 or up to one hour.",
NULL);
406 "TTL used for the connection with the memcache server(s)"),
Apache Multi-Processing Module library.
Small object cache provider interface.
apr_memcache_set(apr_memcache_t *mc, const char *key, char *data, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags)
apr_memcache_delete(apr_memcache_t *mc, const char *key, apr_uint32_t timeout)
apr_memcache_getp(apr_memcache_t *mc, apr_pool_t *p, const char *key, char **baton, apr_size_t *new_length, apr_uint16_t *flags_)
apr_memcache_stats(apr_memcache_server_t *ms, apr_pool_t *p, apr_memcache_stats_t **stats)
Client interface for memcached.
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
#define ap_get_module_config(v, m)
#define AP_DECLARE_MODULE(foo)
const unsigned char * buf
int ap_rprintf(request_rec *r, const char *fmt,...) __attribute__((format(printf
static APR_INLINE int ap_rputs(const char *str, request_rec *r)
apr_status_t ap_register_provider(apr_pool_t *pool, const char *provider_group, const char *provider_name, const char *provider_version, const void *provider)
const char apr_port_t port
apr_brigade_flush void * ctx
const char apr_ssize_t int flags
const char const apr_size_t data_len
apr_memcache_server_t * ms
apr_pool_t apr_memcache_stats_t ** stats
apr_status_t() ap_socache_iterator_t(ap_socache_instance_t *instance, server_rec *s, void *userctx, const unsigned char *id, unsigned int idlen, const unsigned char *data, unsigned int datalen, apr_pool_t *pool)
#define AP_SOCACHE_PROVIDER_GROUP
#define AP_SOCACHE_PROVIDER_VERSION
#define STANDARD20_MODULE_STUFF
void ap_bin2hex(const void *src, apr_size_t srclen, char *dest)
#define AP_DEBUG_ASSERT(exp)
apr_status_t ap_timeout_parameter_parse(const char *timeout_parameter, apr_interval_time_t *timeout, const char *default_time_unit)
const char int apr_pool_t * pool
#define apr_pcalloc(p, size)
apr_int64_t apr_interval_time_t
#define apr_time_sec(time)
#define apr_time_from_sec(sec)
apr_status_t ap_mpm_query(int query_code, int *result)
#define AP_MPMQ_HARD_LIMIT_THREADS
static void * create_server_config(apr_pool_t *p, server_rec *s)
#define MC_DEFAULT_SERVER_TTL
static const command_rec socache_memcache_cmds[]
static apr_status_t socache_mc_iterate(ap_socache_instance_t *instance, server_rec *s, void *userctx, ap_socache_iterator_t *iterator, apr_pool_t *pool)
static void socache_mc_status(ap_socache_instance_t *ctx, request_rec *r, int flags)
static apr_status_t socache_mc_retrieve(ap_socache_instance_t *ctx, server_rec *s, const unsigned char *id, unsigned int idlen, unsigned char *dest, unsigned int *destlen, apr_pool_t *p)
static apr_status_t socache_mc_store(ap_socache_instance_t *ctx, server_rec *s, const unsigned char *id, unsigned int idlen, apr_time_t expiry, unsigned char *ucaData, unsigned int nData, apr_pool_t *p)
static const ap_socache_provider_t socache_mc
static void register_hooks(apr_pool_t *p)
#define MC_DEFAULT_SERVER_MIN
static const char * socache_mc_set_ttl(cmd_parms *cmd, void *dummy, const char *arg)
static const char * socache_mc_create(ap_socache_instance_t **context, const char *arg, apr_pool_t *tmp, apr_pool_t *p)
#define MC_DEFAULT_SERVER_SMAX
static apr_status_t socache_mc_remove(ap_socache_instance_t *ctx, server_rec *s, const unsigned char *id, unsigned int idlen, apr_pool_t *p)
#define MC_DEFAULT_SERVER_PORT
static int socache_mc_id2key(ap_socache_instance_t *ctx, const unsigned char *id, unsigned int idlen, char *key, apr_size_t keylen)
static apr_status_t socache_mc_init(ap_socache_instance_t *ctx, const char *namespace, const struct ap_socache_hints *hints, server_rec *s, apr_pool_t *p)
static void socache_mc_destroy(ap_socache_instance_t *context, server_rec *s)
Status Report Extension Module to Apache.
apr_memcache_server_status_t status
apr_redis_server_t ** live_servers
A structure that represents the current request.
A structure to store information for each virtual server.
static size_t keylen(KEY s)