网站制作学习网Linux→正文:ngx_http_file_cache_name(r,path)-Nginx源码分析
字体:

ngx_http_file_cache_name(r,path)-Nginx源码分析

Linux 2012/7/5 19:31:10  点击:不统计

www-fo-a-sp.cn

下面对nginx源码的一个函数ngx_http_file_cache_name(r,path)进行分析,所在ngx_http_file_cache.c文件
调用是在192行,传递参数 一个是request请求结构,一个是cache的路径(这里是配置文件的文件夹)

/*定义file cache*/
static ngx_int_t
ngx_http_file_cache_name(ngx_http_request_t *r, ngx_path_t *path)
{
    u_char            *p;
    ngx_http_cache_t  *c;

    c = r->cache;/*给http_cache中保存文件名字长度赋值 cache路径 斜杠 +level 的长度  16char *2 十六进制标志*/
    c->file.name.len = path->name.len + 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;
 // 给http_cache文件名分配内存
    c->file.name.data = ngx_pnalloc(r->pool, c->file.name.len + 1);
 // 如果分配内存失败
    if (c->file.name.data == NULL) {
        return NGX_ERROR;
    }
 // 给http_cache文件路径赋值
    ngx_memcpy(c->file.name.data, path->name.data, path->name.len);
   //给字符串后面加上\0,结束符
    p = c->file.name.data + path->name.len + 1 + path->len;
    p = ngx_hex_dump(p, c->key, NGX_HTTP_CACHE_KEY_LEN);
    *p = '\0';
 //通过从配置文件中的path,得到完整路径,ngx_create_hashed_filename是填充level路径
    ngx_create_hashed_filename(path, c->file.name.data, c->file.name.len);

    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                   "cache file: \"%s\"", c->file.name.data);

    return NGX_OK;
}
ngx_create_hashed_filename 是通过level设置对应的文件夹路径,是根据md5值过来的后面的位数定义的文件夹。


原文章%77w%77%2Ef%6F%72%61%73%70%2E%63n

·上一篇:c写入内存 写入文件 >>    ·下一篇:c 计算char 字符串转换为数字 >>
推荐文章
最新文章