small-package/luci-app-nginx-pingos/modules/nginx-toolkit-module/doc/ngx-event-timer-module.md

2.0 KiB

Module ngx-event-timer-module


Instructions

Independent timer for nginx

Directives

Syntax  : worker_timers number;
Default : worker_timers 1024;
Context : events

Sets the maximum number of timers that can be used in worker process.

events {
	...
	worker_timers       1024;
}

API

header file

For using this API, You should include the header file as below:

#include "ngx_event_timer_module.h"

registe domain

ngx_int_t ngx_event_timer_add_timer(ngx_msec_t tv,
        ngx_timer_handler_pt h, void *data);
  • return value:

    return timerid for successd, NGX_ERROR for failed.

    Error:

    • h is NULL
    • not enough timer for assigned
  • paras:

    • tv : timer interval to trigger handler
    • h : timer handler
    • data : data of h para

Register a timer handler, timer interval is tv, measured by millisecond. When timer triggered, h will be called, using data as function parameters.

h's protype is:

typedef void (* ngx_timer_handler_pt)(void *data);
  • return value:

    None

  • paras:

    • data: data set in ngx_event_timer_add_timer, for paras transmit

del timer

void ngx_event_timer_del_timer(ngx_uint_t timerid);
  • return value:

    void

  • paras:

    • timerid: return by ngx_event_timer_add_timer

Deregister timer handler.

Build

cd to NGINX source directory & run this:

./configure --add-module=/path/to/nginx-toolkit-module/
make && make install

Example

See t/ngx_event_timer_test_module.c as reference

Build:

./configure --add-module=/path/to/nginx-toolkit-module/t/ --add-module=/path/to/nginx-toolkit-module/
make && make install

Configure:

location /event_timer_test/ {
	event_timer_test;
}

Test:

add timer

curl -XPOST -v "http://127.0.0.1/event_timer_test/timer?time=3s"

Test module will start a timer when process init. It will log after 3 seconds, set in args:

2016/12/10 18:48:37 [error] 20295#0: event timer test timer handler

del timer

curl -XDELETE -v "http://127.0.0.1/event_timer_test/timer?timerid=1"

Test module will stop a timer whose timerid is 1