summaryrefslogtreecommitdiffhomepage
path: root/src/os/win32/ngx_process_cycle.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-10-26 17:23:49 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-10-26 17:23:49 +0000
commit7571f6c962e5b02abf01b2f1c9f84cb109728d4d (patch)
tree5170b786a8b635703d8d7e1d61bf16bb94ac85b3 /src/os/win32/ngx_process_cycle.c
parent7201f40d9fa6e0bf548dffb76e8fb6ab7bac5cf6 (diff)
downloadnginx-7571f6c962e5b02abf01b2f1c9f84cb109728d4d.tar.gz
nginx-7571f6c962e5b02abf01b2f1c9f84cb109728d4d.tar.bz2
merge r3017, r3018, r3019, r3020, r3021, r3022, r3023, r3196:
cache management fixes: *) separate cache loader process *) use real file cache length, this fixes cache size counting for responses without "Content-Length" header and 304 responses.
Diffstat (limited to 'src/os/win32/ngx_process_cycle.c')
-rw-r--r--src/os/win32/ngx_process_cycle.c43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c
index 12b13d17e..7a4b9556f 100644
--- a/src/os/win32/ngx_process_cycle.c
+++ b/src/os/win32/ngx_process_cycle.c
@@ -25,6 +25,7 @@ static void ngx_worker_process_exit(ngx_cycle_t *cycle);
static ngx_thread_value_t __stdcall ngx_worker_thread(void *data);
static ngx_thread_value_t __stdcall ngx_cache_manager_thread(void *data);
static void ngx_cache_manager_process_handler(void);
+static ngx_thread_value_t __stdcall ngx_cache_loader_thread(void *data);
ngx_uint_t ngx_process;
@@ -440,10 +441,10 @@ ngx_quit_worker_processes(ngx_cycle_t *cycle, ngx_uint_t old)
ngx_processes[n].pid,
ngx_processes[n].handle,
ngx_processes[n].exiting,
- ngx_processes[n].just_respawn);
+ ngx_processes[n].just_spawn);
- if (old && ngx_processes[n].just_respawn) {
- ngx_processes[n].just_respawn = 0;
+ if (old && ngx_processes[n].just_spawn) {
+ ngx_processes[n].just_spawn = 0;
continue;
}
@@ -550,7 +551,7 @@ found:
ngx_processes[n].pid,
ngx_processes[n].handle,
ngx_processes[n].exiting,
- ngx_processes[n].just_respawn);
+ ngx_processes[n].just_spawn);
if (ngx_processes[n].handle) {
return 1;
@@ -670,6 +671,10 @@ ngx_worker_process_cycle(ngx_cycle_t *cycle, char *mevn)
goto failed;
}
+ if (ngx_create_thread(&cmtid, ngx_cache_loader_thread, NULL, log) != 0) {
+ goto failed;
+ }
+
for ( ;; ) {
ev = WaitForMultipleObjects(3, events, 0, INFINITE);
@@ -925,7 +930,7 @@ ngx_cache_manager_thread(void *data)
return 0;
}
- break;
+ break;
}
for ( ;; ) {
@@ -985,6 +990,34 @@ ngx_cache_manager_process_handler(void)
}
+static ngx_thread_value_t __stdcall
+ngx_cache_loader_thread(void *data)
+{
+ ngx_uint_t i;
+ ngx_path_t **path;
+ ngx_cycle_t *cycle;
+
+ ngx_msleep(60000);
+
+ cycle = (ngx_cycle_t *) ngx_cycle;
+
+ path = cycle->pathes.elts;
+ for (i = 0; i < cycle->pathes.nelts; i++) {
+
+ if (ngx_terminate || ngx_quit) {
+ break;
+ }
+
+ if (path[i]->loader) {
+ path[i]->loader(path[i]->data);
+ ngx_time_update(0, 0);
+ }
+ }
+
+ return 0;
+}
+
+
void
ngx_single_process_cycle(ngx_cycle_t *cycle)
{