浪湾(langwan) 一个思想跳跃的程序员
百度空间 | 百度首页 
 
文章列表
 
2009-08-25 14:57
很久没有更新博客了,发现 NginxCodeReview 更新了一些新的内容。用wiki方法展现的确感觉更清晰,看到RainX他们自己写了一个ep_server的demo,突然想到除了event处理以外,对connection的处理也是其中一个关键。

最近也尝试了用java写server服务器,用其自带的ExecutorService的确很轻松可以写一个很不错的server。因此未来对server的研究也不局限什么语言,算法上其实大同小异,而且也可以借鉴java中的一些成熟算法。毕竟java的算法也
 
2009-08-17 09:11
人有无限的能力却没有无限的生命。

2009-08-17 早上
 
2009-08-01 15:12
这一节,主要讲述ngx_http_ssi_header_filter()函数,代码不多50多行。

从参数说起,每个header过滤器输入输出是一致的,输入是ngx_http_request_t *r输出是ngx_int_t。
r是当前请求的变量,如果返回NGX_OK表示正确,错误的一般返回NGX_ERR之类。

每个插件可能会有两个特别的结构,一个是上下文结构ctx,一个是配置信息例如这里被声明成:

    ngx_http_ssi_ctx_t       *ctx;
    ngx_http_ssi_loc_conf_t *slcf;

 
2009-08-01 12:03
在nginx.conf配置文件中,SSI模块支持以下几种配置:

ssi 表示开启或关闭ssi功能 可用的值是 on或者off。
ssi_silent_errors 在处理SSI请求的时候是否提示错误 可用的值是 on或者off。
ssi_ignore_recycled_buffers 在官方的文档中没有表示,默认是关闭,应该和回收内存有关,相关代码如下:

默认值:

slcf->ignore_recycled_buffers = NGX_CONF_UNSET;

实际工作中的应用场景:

            if (slcf->ignore_rec
 
2009-07-30 15:38
首先我们要了解SSI有哪些指令,可以参考:http://httpd.apache.org/docs/1.3/howto/ssi.html

Nginx支持一些常用命令,如下:

include - 插入子文档
echo - 输出变量
config - 设置返回给客户端的错误信息、文件大小及时间等。
set - 设置文档的内部变量。
if elif else endif - 条件判断语句
block endblock - 我只能给出原文解释,在我给你的参考中并不包含这个命令,我查阅的其他资料也不包含这个命令,换句话说Apache不支持block命令,而Nginx自己支持,原文是command describes the block, w
 
2009-07-30 11:32
偶尔被世界遗忘在角落里也是一种幸福。

            -- 献给那些需要片刻宁静的朋友 浪湾 2009.7.30 语
 
2009-07-13 10:55
翻译原文

原文地址:http://blogs.sun.com/trond/entry/noreply_support_in_libmemcached
memcached协议允许我们只执行服务器命令而不返回结果。为什么你要这样做?一种情景是你只想
把items存储起来,你不关心它是否成功。直到今天你可以使用两种往缓存里插入items的模式。
同步模式(默认的)和异步模式。

如果我们看下面这段代码:

for (int
 
2009-07-02 10:43
人要三分毒自己,七分让他人。

-- 献给工作中乐观拼搏的人们。
 
2009-06-10 11:50
我看Nginx源代码的时候,感觉整个系统都在传递log指针。log在nginx里是比较关键的。日志和内存分配是最基础的两个起点代码,最好是在自己写的程序框架中早点完善并实现。以免未来要用大量的精力调整。

1. 日志的源代码位置

日志的源代码在src/code/ngx_log.c及ngx_log.h里。

2. 日志的初始化

在main()函数一开始,对一些基础数据进行初始化,其中之一就是日志,源代码如下:

    log =
 
2009-06-03 08:09
<?php

$s = time();


/*1234567812345678123456781234567812... 重复下去2M左右...456781234567812*/

$e = time();

echo 'ret='.($s - $e);

echo "\n mem=".memory_get_peak_usage();

?>

第一个试验:无APC环境
第二个试验:有APC环境

读者自己尝试,我今天删以前做的实验文件,才翻出来的。

最好用 D:> PHP xxxx.php这种方式执行 避免让其它因素参与进来,例如apache。
 
2009-06-01 21:52
我的团队最主要的语言是PHP,所以我感觉除了研究Nginx这些代码以外,还是要看看PHP的。

【特点一】 有一个“老祖宗类”

abstract class Base 这个类就两个魔术函数__set()、__get()。其它Lib类都要从这个类上进行派生。

【特点二】对require_once进行了二次封装,看下面的代码:

// 优化的require_once
function require_cache($filename)
{
    static $_importFiles = array();
    $filename   = realpath($filename);
 
2009-06-01 12:55
    今天看了一下Thinkphp的源代码,看到了他对主框架的一种缓存机制,以前也没关注到 php_strip_whitespace()函数的用法。

    // 是否生成核心缓存
    $cache =   ( !defined('CACHE_RUNTIME') || CACHE_RUNTIME == true );
    if($cache) {
        if(defined('STRIP_RUNTIME_SPACE') && STRIP_RUNTIME_SPACE == false ) {
       
 
2009-05-27 18:11
在任何一套成熟的C语言写的服务器或者语言或者应用里都包含有一些基本的数据结构操作,

一般是 array、list、hash、buf等,剖析nginx的list是下面这种结构:

元素本身的长度是size,每个桶可承担n项,那么当你插入第n+1个元素的时候,要创建一个新桶。因此nginx的list内部元素是定长结构。

例如:

mctx->variables = ngx_list_create(r->pool, 4,
                     
 
2009-05-27 13:29
WEB服务器最基本的功能就是对请求进行分析,每个请求至少分析header和body两个组成部分。因此分析header的效率也是很关键的。

Nginx在Http处理上依赖于ngx_http_request_s结构体,负责一个请求在整个周期内的所有信息维护。

在这个结构体内,维持着一组与header有关的信息,例如:

ngx_buf_t                                 
 
2009-05-25 21:17
今天很累,明天很困,后天很乏,日积月累成胖子!
 
     
 
 
个人档案
 
langwanluo

上次登录:
1天前
加为好友
 
   
 
文章分类
 
 
Php(30)
 
 
 
 
 
Vc(3)
 
 
 
 
 
     
 
最新评论
 
文章评论|照片评论


代码正确,刚验证过
 
 

试了,没用呀
 

浪湾兄,有没有联系方式,交个朋友?
 

很不错的一张图阿
 
     
 
好友最新文章
 
     
 
最近访客
 
 

linux_k

zhangjunxiang9

rocenting

saascd

boosheng

onlymomo119

汉皇帝

tyfool
     
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     


©2009 Baidu