• 关于读书的书和关于读书笔记的东西

    【神仙】 May 7, 2008 00:12

       题目有点绕口,这书的名字叫《如何阅读一本书》。看名字就知道,这是一本关于读书的书。从数理逻辑的角度看,这是有点自指的。在读这本书的时候,会同时影响你读这本书。如果这本书确实起了什么作用的话。——还是有点绕口……

      这本书里说的自然是读书的方法。看前面一部分的时候,又想到了当年的语文课来了。其实语文课讲的也是怎样阅读。这本书里讲的一些方法语文课上也讲过。其实我觉得语文老师更应该读读这本书,在教学生怎么阅读的时候,自己要更明白这些阅读方法的实际意义。

      话说这书里说到了读书笔记。我上学那会,倒是会记一些笔记,在教科书的边上记一些自己的理解,简单的例子之类的,复习的时候还把整本书的公式和要背的东西都抄在前面的白页上。照书上说来,这倒是很好的读书方法。不过,我只对教课书这么干。其他的书,我是舍不得在上面涂画的。虽然有时候看到一句好句也很有拿笔划下来的冲动,不过也都忍住了。(我小时候倒是常干给书上人物画像加胡子之类的事情)这样好吗?不好吗?既然我不一定要同意作者的观点,那我也大可以照旧。:)

  • php-fpm文档中文翻译

    【神仙】 May 1, 2008 16:33

    原文链接:http://php-fpm.anight.org/

    fast-cgi是做啥用的

    FastCGI是一个可伸缩的,高速地在web server和脚本语言间交互的接口。关于FastCGI技术的更多信息可以在官方网站这里看到。

    多数流行的web server都支持FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeus,nginx和lighttpd。

    FastCGI的主要优点是把动态语言和web server分离开来。这种技术允许把web server和动态语言运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。

    php-fpm可以和任何支持远端FastCGI的web server工作。

     

    php-fpm是做啥用的

    很不幸,官方网站php.net上的php在将FastCGI SAPI用于生产环境时有许多已知的问题。

    下面的一些证据足以表明为什么离开了php-fpm,就很难使用FastCGI SAPI。

    描述 php自带的 spawn-fcgi + spawn-php.sh + daemontools php-fpm
    php守护程序: pid file, log file, setsid(), setuid(), setgid(), chroot() (-) (+) (+)
    进程控制,可以平滑地重启、重新载入配置和二进制模块而不丢失请求 php4 - php5 只能平滑停止 (-) (+)
    限制ip地址,可以满足web server的要求 php4 (-) php5 (+) (从 5.2.2 开始) (-) (+)
    根据负载动态调整进程数 (-) (-) Todo
    使用用不同的uid / gid / chroot / 环境变量,不同的 php.ini 选项,不需要safe mode (-) (-) (+)
    记录work process的stdout和stderr (-) (-) (+)
    如果使用优化器,在遇到opcode缓存随机损坏的时候紧急重启所有进程 (-) (-) (+)
    如果set_time_limit没有起作用,强制结束过期进程 (-) (-) Todo
    特色功能 Error header、优化的上传支持、fastcgi_finish_request()

     

    特色功能

    所有的这些功能都是用不打断的方式。也就是说,如果你不使用他们,他们的存在不会影响php的功能,也就是透明的。

     

    Error header

    类型:方便

    默认情况下,如果被访问的php脚本包含语法错误,用户会收到一个空的"200 ok"页。这是不方便的。Error header这个php.ini选项允许在这种情况下产生一个HTTP错误码,比如"HTTP/1.0 550 Server Made Big Boo",从而中断web server请求并显示一个正确的错误页。如果要实现这样的功能,需要在php.ini中添加一条fastcgi.error_header = "HTTP/1.0 550 Server Made Big Boo"

    在php-5.2.4中添加了类似的功能,不过是简化的。如果被访问的php脚本包含语法错误,并且display_errors设为false,且没有进一步的设置,会立刻返回"HTTP/1.0 500 Internal Server Error"。如果你需要设定一个不同于500的错误码(已经在许多情况下被使用)。或者想要使这个行为独立于display_errors的设置,那么可以使用fastcgi.error_header。如果你同时使用php-5.2.5或以上版本和php-fpm,那么fastcgi.error_header的优先级更高。

     

    优化的上传支持

    类型:优化

    这个特性,就如标题那样,可以加速大POST请求的处理速度,包括文件上传。优化是通过确保请求体已写入一个临时文件,然后传递文件名而不是请求体到fastcgi协议来实现的。目前,就我所知,只有nginx0.5.9以上才支持这个功能。显然,这种模式只在php和web server在一台机器上的时候才能用。

    nginx样例配置:

    location ~ \.php$ {
        fastcgi_pass_request_body off;
        client_body_in_file_only clean;
        fastcgi_param  REQUEST_BODY_FILE  $request_body_file;
        ...
        fastcgi_pass ...;
    }

    在php中不需要配置任何东西。如果php收到了参数REQUEST_BODY_FILE,就读取其中的请求体,如果没有,就自行从fastcgi协议中读取请求体。

    结合这个特性,可以考虑对临时文件使用内存文件系统,例如tmpfs(linux):

    client_body_temp_path /dev/shm/client_body_temp;

     

    fastcgi_finish_request()

    类型:优化

    这个特性可以提高php处理请求的速度。如果有些处理可以在页面生成完后进行,就可以使用这种优化。比如,在memcached中保存session就可以在页面交给web server后进行。fastcgi_finisth_request(),这一特性可以结束响应输出,web server可以立即开始交给等不及的客户端,而此刻,php可以在请求的上下文环境中处理许多事情。比如保存session,转换上传的视频,处理统计等等。

    fastcgi_finisth_request()会触发shutdown 函数运行。

     

    FAQ

    Q:php-fpm可以和ZendOptimize一起用吗?
    A:完全可以。

    Q:php-fpm可以和ZendPlatform、xcache、eAccelerator、APCden等等的优化器一起用吗?
    A:是的。php-frpm的架构和任何一种用于高速opcode缓存的共享内存都适用。唯一的限制是:所有的worker进程只能适用一个缓存,即使它们用不同的uid/gid运行。

    Q:为什么要用root运行php-fpm呢?这安全吗?
    A:用root启动php-fpm只有在你打算用不同uid/gid的php来处理请求时才有意义意。比如,在共享主机上的不同站点。因为只有在master进程用root运行的时候,才可以建立不同uid/gid的子进程。这是相当安全的。master进程自己从来不会去处理请求。
    在任何情况下,php-fpm都不会用root身份来处理请求。

    Q:php-fpm可以加速请求处理速度吗?
    A:不,没有影响。不过,如果你使用一些特殊特性,对于一些特定的请求可以有些许性能提升。

    Q:php-fpm将来会被官方的php包含吗?
    A:我很尊重php开发团队和他们的工作。相信他们能做得完美。但不幸的是,就我的经历看来,他们太忙了,似乎讨论php-fpm这个补丁会用相当多的时间,而我则完全没时间。

     

    简要说明:

    php-fpm是根据最小惊奇原则构建的。这是对于缺乏文档的唯一理由。我保证很快会建立一个wiki。如果你有问题的话,请不要犹豫在上面列出的邮件组里写邮件。

    php-fpm已经在linux、macosx、Solaris和freebsd上测试通过。

    确信libxml2(在某些系统上叫做libxml2-devel)已经安装。
    下载php和php-fpm

    $ bzip2 -cd php-5.2.5.tar.bz2 | tar xf -
    $ gzip -cd php-5.2.5-fpm-0.5.7.diff.gz | patch -d php-5.2.5 -p1
    $ cd php-5.2.5 && ./configure --enable-fastcgi --enable-fpm
    $ make all install
    编辑$prefix/etc/php-fpm.conf
    运行$prefix/bin/php-cgi --fpm
    检查$prefix/logs/php-fpm.log的细节
    运行phpinfo()检查你的网站是否正常
    master进程的pid被存放在$prefix/logs/php-fpm.pid

    master进程可以理解以下信号:
    SIGINT, SIGTERM 直接终止
    SIGQUIT 平滑终止
    SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块

    译注:创建补丁后,会产生一个补丁文件。在./configuire后会提示你打上。configure比较费时,如果直接打上补丁再./configure可以省些时间。
    php-fpm还带有一个更方便的脚本,在$prefix/sbin/php-fpm。可以用php-fpm start|graceful|restart|stop来维护。稍编辑一下就可以让它使用配置文件。

     

    这个文档原来基本都是俄文的。我是用google翻译先弄成英文,然后再翻成中文。这当中会产生些错误,可能是google的,也可能是我的。如果你发现了,请指出,谢谢。

     p.s. 先感谢下digitalsonic帮我挑了几个错。

  • 四月二十二日的无标题文档

    【神仙】 Apr 26, 2008 12:59

      周日去代车大人还书,又到了这片小时候生活过的地方。还了书之后,稍坐了会,还是告辞出来了。对面就是交大。虽说我在这片住了许多年,但从没好好逛过交大。记得上一回去好像还是中考报名的事了。所以,我就走了进去。

      交大是一百多年的老学校了,校园里有许多老建筑。虽然都上了年纪,但他们还是很漂亮,很精致。不仅是造型,柱头、墙壁上的装饰,以及既陈旧,又鲜活的颜色。走过嫩绿的,洒着红色的香樟树叶的草坪,抚摸粗糙的,但又被时间冲淋打磨过的墙壁、柱子,仿佛能听见他们的故事。墙上嵌着的铭牌上写着房子的身世。直白,平淡,却让人想象过去这里的景象,在耳畔想起昨日的声音。办公楼的石栏杆前睡着一只白猫,懒懒的,毛也有些脏。有人过去摸它,也一点不紧张,爱理不理的样子。门前的花坛里还有三四只年轻的猫挤在一起。莫非它们都是一家的么?

      草坪正中的雕塑前有五个很无趣的石球,外面还围了圈更煞风景的铝合金栏杆。这里也不都是和谐的。就比如某学院一百周年的宣传画上,那个石狮子总用邪恶的表情看着我。

      好吧,现在的大学已经不是当年的大学了,即使是像交大这样的“名牌大学”。当然这也不仅仅是大学的问题或是大学生的问题。但当理想成了不切实际的奢侈品,当人生的目标已经变得如此现实功利的时候,又怎能不让人感到悲哀呢。

      从华山路校门出来,过了马路就是康平路。当年我就住在这条路上。即使过了这许多年,这条路也还是那样安静。路过一家饭馆,挂着一块牌子——创始于1984年。嗯,和我同年。这里的一切和都和许多年前差不太多。有些房子修葺过了,但也还基本保持着旧貌。有的店易主了,有的店还没变。但相比这过去的这许多年,这些改变只能算是小小的插曲。在那些推倒一切然后重新建设的地方,所有的景观都是新的,陌生的,除了路名,不再有可以凭以回忆的东西。而在这里,一切都还是亲切的,仿佛一个家人。但同时,也渐渐生出了一些疏离感。这里的一切正在老去,正在现在的我割裂开来。昔日的光彩一点点斑驳,破败,慢慢变成回忆。如一首忧伤而华丽的探戈。我已经不忍走近我从小长大的那条弄堂了。

      天上飘起细碎的雨来。我还是离开了吧。

  • 上周末的古猗园

    【神仙】 Apr 19, 2008 14:45

      上周末和爸妈去了回古猗园。在拥挤的汽车上摇晃了一路,想起了咱的香必飘,为啥不在公交车上飘一下呢?

      古猗园似乎经过了几次扩建,大了不少,已经不完全是原来的样子了。不过就我看到的来说,相比苏州的那几个园林,在造园的艺术上讲似乎要差不少。难道说古代的苏州人比上海人有钱?

      逛完园子吃小笼,似乎也就一般般。那儿有好几家卖小笼包子的,也不晓得哪家才算正宗。

      照片: 

     

  • 导出错误编码的mysql数据库

    【神仙】 Apr 12, 2008 21:45
    有一个数据库,定义的编码是utf8,但由于程序里没set names utf8,结果是按latin1插入的。虽然显示没问题,但实际储存的是堆奇怪的东西,直接mysqldump出来是乱码,完全没法用。

    后来发现,set names latin1之后,查询出来的东西是正常的,于是试着给mysqldump加上--default-character-set=latin1 --set-charset参数。导出来的文件果然就正常了。之后,去掉sql文件中的那行latin1的东西,再导进新的库里,一切正常。

     

     

  • php5.3的hear doc新特性

    【神仙】 Apr 6, 2008 22:56

    未来的php5.3多了许多新特性。上回pea活动,在ben那里的新特性列表里,发现一个原来忽略的。就是hear doc现在可以不处理里面的字符串了。就像这样:

    $code =<<<'END'
        $a = 1;
        echo "$a\n";
    END;
    echo $code;

    这样有什么好处呢?本来,php是没有block或者lambda表达式这样的东西的。create_function由于那个参数是个字符串,也不怎么好使。现在可以更方便地用hear doc来实现类似的功能了。比如这个:

    class ArrayList {
        private $arr;
        function __construct($arr) {
            $this->arr = $arr;
        }

        function each($call) {
            foreach ($this->arr as $item) {
                call_user_func($call, $item);
            }
        }
    }

    $a = new ArrayList(array(1,2,3,4,5));
    $a->each(create_function('$item', <<<'END'
        echo "[$item]\n";
    END
    ));

    虽然比起ruby来要丑陋多了,变量作用域也不一样。不过总算聊胜于无。

     

  • 去看外白渡桥了

    【神仙】 Apr 6, 2008 22:01

    据说今天外白渡桥要拆去修,于是我就去凑了热闹。桥是上午拆的,我是下午去的,所以就只能看半截桥了。就要看这半截桥也不太容易。拆迁工地两头封得严实,又有吴淞路闸桥煞风景。最好的角度就是黄浦公园了。又顺便到北外滩转了下。

    上海还是有许多好看的老房子正在破败中啊~~

  • 春天啊春天

    【神仙】 Apr 4, 2008 11:56

    春天是花开的季节,春天是动物复苏的季节,春天也是生病的季节。所以,我就咳嗽起来了,好多天了。不爽啊~,我还想出去玩呢。现在就只能在家修养了。

    最近开始玩豆瓣的群组,确实很好玩。基本上就和我设想的群组模式一样。如果和活动、博客结合得更紧密的话应该会更好玩吧。

     

  • 空间

    【神仙】 Mar 28, 2008 11:45

  • 我们应该怎样倾听

    【神仙】 Mar 21, 2008 22:58

    我们应该怎样倾听
    那来自天上的声音
    是凝视自己身体里的呼应
    还是追随北风呼啸的身影

    黄昏的鸟鸣唤起遥远的乡情
    丛林的吼声惊扰梦中的美景
    那些声音的虚实远近
    我们又应该怎样判定

    或许直到终结把一切分清
    我们才能确信我们的谛听
    是通往地核深处的路径
    还是敞开的另一只眼睛

日历

个人资料

【神仙】

世人都晓神仙好~~~~