[译] 战前准备,Nginx优化指南

    原文地址:http://blog.zachorr.com/nginx-setup/

    ———————————————————————-

    大多数Nginx的安装指南告诉你基础信息 —— apt-get 一个包,这里那里的修改几行,这样 你就得到了一个web 服务器!并且,在大多数的情况下,这样傻瓜式安装的Nginx 可以很好的为你的站点工作。但是,如果你真的想压榨出Nginx的性能,你将不得不一步一步慢慢来。在这个指南中,我将说明如何对Nginx的参数进行微调能更好的应付较大的访问量。仅仅是一个说明,这不是一个全面的微调综合指南。它是对调整一些设置能提交的性能的一些说明。你的水平可能不同(读者水平参差不齐)。

基础(优化)配置

    你只需要修改你的Nginx配置文件 nginx.conf,这里有全部的nginx的不同模块的设置项。你应该能够你的服务器的 /etc/nginx 目录下找到nginx.conf。首先,我将告诉你一些全局设置,然后在讨论各个模块的设置,谈论哪些设置能为大的访问量提供最佳性能,和为什么他们能有更好的性能,在文章的末尾你可以找到一个完整的配置文件。

顶级配置

    Nginx的nginx.conf配置文件中有少数几个配置选项,在其他模块配置之上。

user www-data;

pid /var/run/nginx.pid;

worker_processes auto;

worker_rlimit_nofile 100000;

    userpid 都应该使用默认设置。我们不用修改,他不会为我们的性能用户做什么。

    worker_processes 定义的是nginx为你的站点提供服务时可以启用的worker进程的数量。这个配置的最优值取决与很多的因素,包括(但不仅限于)CPU的核心数量,数据硬盘的数量以及负载模式。当你不确定的时候,将它设置为CPU的核心数是一个不错的开始(如果这个值是“auto”nginx将尝试自动检测)。

    worker_rlimit_nofile 更改这个限制,可以更改worder进程最大的文件打开数。如果没有设置,将使用操作系统的限制值。设置后你的系统和nginx能处理比 “ulimit -n” 更多的文件。所以我们要将这个值设置的高一些,这样nginx就再也不会出现 “too many open files” 的issue了。确保你的操作系统也更新了这些值。

Continue reading

[译]鲜为人知的PHP OO模型 “功能(Features)”

原文地址:http://www.sitepoint.com/lesser-known-features-of-phps-oo-model/

(刚开始翻译,其中诸多地方翻译的不是很好,不幸被大神看到请使劲拍~~)

如今大多数的PHP应用都使用面向对象模式开发,而且PHP的开发者对OOP概念都有不错的理解。本文将拓展你的认知,并告诉你一些技巧和潜在的误区。

接口的继承以及 Traits

让我们从熟悉的领域“继承”开始。PHP接口允许我们定义一个约束,任何实现这个接口的对象必须在他自身实现这个接口(中的抽象方法)。但是你知道接口可以继承其他接口并且父或子接口都能被类实现吗?

考虑下面这段代码,定义一个接口,另一个接口继承他,并且用一个类实现这个子接口:

<?php
interface Reversible
{
    function reverse($target);
}
 
interface Recursible extends Reversible
{
    function recurse($target);
}
 
class Tricks implements Recursible
{
    public function recurse($target) {
        // something cool happens here
    }
 
    public function reverse($target) {
        // something backward happens here
    }
}

Continue reading

师夷长技 | wwpeng | | (1) |

[译]修复PHP HashTable碰撞DOS 引入新的远程访问漏洞

原文:http://thexploit.com/sec/critical-php-remote-vulnerability-introduced-in-fix-for-php-hashtable-collision-dos/

(初步练习翻译,各种不当求大神指出~)

Stefan Esser (@i0n1c)

一个安全修复引入另外的漏洞

今天, Stefan Esser (@i0n1c) 提交了一个 PHP 5.3.9 (updateassigned CVE-2012-0830) 版本下重要的远程利用漏洞。有趣的是,这个漏洞是为了修复十二月提交的哈希碰撞导致拒绝服务 DOS (CVE-2011-4885) 的漏洞而引入的。

关于漏洞的修复

为了防止哈希碰撞这个修复在 php.ini 配置文件中引入了一个新的参数:
max_input_vars

这个配置参数限制了请求提交的变量的数量(e.g. http://request.com/foo.php?a=1&b=2&c=3)。默认值是1000。

这个修改在文件 php_variables.c 的方法 php_register_variable_ex 中。

通过这个方法,PHP会“注册”所有提交过来的变量。

if (sapi_module.input_filter(PARSE_POST, var, &val, val_len, &new_val_len TSRMLS_CC)) {
    php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC);
}

Continue reading

师夷长技 | wwpeng | | (0) |