cvs: /php4/ext/session mod_mm.c php_session.h session.c
| From: | Sascha Schumann | Date: | Wed, 29 Mar 2000 20:37:59 +0000 |
| Subject: | cvs: /php4/ext/session mod_mm.c php_session.h session.c | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-12831@lists.php.net to get a copy of this message | ||
sas Wed Mar 29 12:37:59 2000 EDT
Modified files:
/php4/ext/session mod_mm.c php_session.h session.c
Log:
GC now prints out how many session objects were removed
Index: php4/ext/session/mod_mm.c
diff -u php4/ext/session/mod_mm.c:1.6 php4/ext/session/mod_mm.c:1.7
--- php4/ext/session/mod_mm.c:1.6 Sat Feb 19 15:41:19 2000
+++ php4/ext/session/mod_mm.c Wed Mar 29 12:37:29 2000
@@ -305,6 +305,7 @@
time_t now;
ps_sd *sd, *next;
+ *nrdels = 0;
ps_mm_debug("gc\n");
mm_lock(data->mm, MM_LOCK_RW);
@@ -315,8 +316,10 @@
for (sd = data->hash[h]; sd; sd = next) {
next = sd->next;
ps_mm_debug("looking at %s\n", sd->key);
- if ((now - sd->ctime) > maxlifetime)
+ if ((now - sd->ctime) > maxlifetime) {
ps_sd_destroy(data, sd);
+ *nrdels++;
+ }
}
mm_unlock(data->mm);
Index: php4/ext/session/php_session.h
diff -u php4/ext/session/php_session.h:1.28 php4/ext/session/php_session.h:1.29
--- php4/ext/session/php_session.h:1.28 Mon Mar 13 07:49:13 2000
+++ php4/ext/session/php_session.h Wed Mar 29 12:37:29 2000
@@ -35,7 +35,7 @@
#define PS_READ_ARGS void **mod_data, const char *key, char **val, int *vallen
#define PS_WRITE_ARGS void **mod_data, const char *key, const char *val, const int vallen
#define PS_DESTROY_ARGS void **mod_data, const char *key
-#define PS_GC_ARGS void **mod_data, int maxlifetime
+#define PS_GC_ARGS void **mod_data, int maxlifetime, int *nrdels
typedef struct ps_module_struct {
const char *name;
Index: php4/ext/session/session.c
diff -u php4/ext/session/session.c:1.121 php4/ext/session/session.c:1.122
--- php4/ext/session/session.c:1.121 Wed Mar 29 01:36:27 2000
+++ php4/ext/session/session.c Wed Mar 29 12:37:29 2000
@@ -813,10 +813,15 @@
_php_session_initialize(PSLS_C);
if (PS(mod_data) && PS(gc_probability) > 0) {
+ int nrdels = -1;
+
srand(time(NULL));
nrand = (int) (100.0*rand()/RAND_MAX);
- if (nrand < PS(gc_probability))
- PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime));
+ if (nrand < PS(gc_probability)) {
+ PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels);
+ if (nrdels != -1)
+ php_error(E_NOTICE, "Session gc: cleared %d\n", nrdels);
+ }
}
}