PHP session机制点滴

PHP里面管理session需要实现如下函数:
#define PS_OPEN_FUNC(x)     int ps_open_##x(PS_OPEN_ARGS)
#define PS_CLOSE_FUNC(x)     int ps_close_##x(PS_CLOSE_ARGS)
#define PS_READ_FUNC(x)     int ps_read_##x(PS_READ_ARGS)
#define PS_WRITE_FUNC(x)     int ps_write_##x(PS_WRITE_ARGS)
#define PS_DESTROY_FUNC(x)     int ps_delete_##x(PS_DESTROY_ARGS)
#define PS_GC_FUNC(x)         int ps_gc_##x(PS_GC_ARGS)
#define PS_CREATE_SID_FUNC(x)    char *ps_create_sid_##x(PS_CREATE_SID_ARGS)

可参看: ext/session/php_session.h

至于这些函数在什么时候被触发调用,参看: ext/session/session.c

管理session的实例可以参看memcache模块(其它模块也有); 如关闭函数的定义:

 
  1. PS_CLOSE_FUNC(memcache)
  2. {
  3.     mmc_pool_t *pool = PS_GET_MOD_DATA();
  4.     if (pool) {
  5.         mmc_pool_free(pool TSRMLS_CC);
  6.         PS_SET_MOD_DATA(NULL);
  7.     }   
  8.     return SUCCESS;
  9. }

一般情况下,一个请求中session只回写一次,在请求结束时回写;如果要在中间强制回写,则可以使用: session_write_close();函数, 但是一定要注意,回写之后session状态为关闭状态,再给$_SESSION数组赋值是不会回写的,除非重新session_start();

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据