diff src/http/modules/perl/nginx.xs @ 1897:b43f244d0430

optimize $r->sleep
author Igor Sysoev <igor@sysoev.ru>
date Sat, 16 Feb 2008 14:23:14 +0000
parents 2e3353955c32
children 9a73235ce453
line wrap: on
line diff
--- a/src/http/modules/perl/nginx.xs
+++ b/src/http/modules/perl/nginx.xs
@@ -934,17 +934,23 @@ sleep(r, sleep, next)
     CODE:
 
     ngx_http_request_t   *r;
+    ngx_msec_t            sleep;
     ngx_http_perl_ctx_t  *ctx;
 
     ngx_http_perl_set_request(r);
 
+    sleep = SvIV(ST(1));
+
+    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+                   "perl sleep: %M", sleep);
+
     ctx = ngx_http_get_module_ctx(r, ngx_http_perl_module);
 
-    ctx->sleep = SvIV(ST(1));
     ctx->next = SvRV(ST(2));
 
-    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-                   "perl sleep: %d", ctx->sleep);
+    ngx_add_timer(r->connection->write, sleep);
+
+    r->write_event_handler = ngx_http_perl_sleep_handler;
 
 
 void