Tag PHP

高流量站点NGINX与PHP-fpm配置优化(译)

原文:Optimizing NGINX and PHP-fpm for high traffic sites 译者:youngsterxyf 使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的数据拷贝和上下文切换)。 但有一点需要牢记:仅运行在同一台服务器上的程序可以访问UNIX域套接字(显然没有网络支持)。 2. 调整工作进程数 现代计算机硬件是多处理器的,NGINX可以利用多物理或虚拟处理器。 多数情况下,你的Web服务器都不会配置为处理多种任务(比如作为Web服务器提供服务的同时也是一个打印服务器),你可以配置NGINX使用所有可用的处理器,NGINX工作进程并不是多线程的。 运行以下命令可以获知你的机器有多少个处理器: Linux上 – FreeBSD上 – 将nginx.conf文件中work_processes的值设置为机器的处理器核数。 同时,增大worker_connections(每个处理器核心可以处理多少个连接)的值,以及将”multi_accept”设置为ON,如果你使用的是Linux,则也使用”epoll”: 3. 设置upstream负载均衡 以我们的经验来看,同一台机器上多个upstream后端相比单个upstream后端能够带来更高的吞吐量。 例如,如果你想支持最大1000个PHP-fpm子进程(children),可以将该数字平均分配到两个upstream后端,各自处理500个PHP-fpm子进程: 以下是两个来自php-fpm.conf的进程池: 4. 禁用访问日志文件 这一点影响较大,因为高流量站点上的日志文件涉及大量必须在所有线程之间同步的IO操作。 若你不能关闭访问日志文件,至少应该使用缓冲: 5. 启用GZip 6. 缓存被频繁访问的文件相关的信息 7. 调整客户端超时时间 8. 调整输出缓冲区大小 9. � 10. 监控 持续监控打开连接的数目,空闲内存以及等待状态线程的数目。 设置警报在超出阈值时通知你。你可以自己构建这些警报,或者使用类似ServerDensity的东西。 确认安装了NGINX的stub_status模块。该模块默认并不会编译进NGINX,所以可能你需要重新编译NGINX – 原文:

Read More高流量站点NGINX与PHP-fpm配置优化(译)

PHP的日期时间函数date()

转Google 1,年-月-日 echo date(‘Y-m-j’); 2007-02-6 echo date(‘y-n-j’); 07-2-6 大写Y表示年四位数字,而小写y表示年的两位数字; 小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。 echo date(‘Y-M-j’); 2007-Feb-6 echo date(‘Y-m-d’); 2007-02-06 大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0); 没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。 echo date(‘Y-M-j’); 2007-Feb-6 echo date(‘Y-F-jS’); 2007-February-6th 大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f) 大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。 小结: 表示年可以用大写的Y和小写y; 表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式); 表示日可以用小写d和小写j,大写S表示日期的后缀。 2,时:分:秒 默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。 echo date(‘g:i:s a’); 5:56:57 am echo date(‘h:i:s A’); 05:56:57 AM 小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。 当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。 echo date(‘G:i:s’); 14:02:26 大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数 小结: 字母g表示小时不带前导,字母h表示小时带前导; 小写g、h表示12小时制,大写G、H表示24小时制。 3,闰年、星期、天 echo date(‘L’); 今年是否闰年:0 echo date(‘l’); 今天是:Tuesday echo date(‘D’); 今天是:Tue 大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0; 小写l表示当天是星期几的英文全写(Tuesday); 而使用大写D表示星期几的3个字符缩写(Tue)。 echo date(‘w’); 今天星期:2 echo date(‘W’); 本周是全年中的第 06 周 小写w表示星期几,数字形式表示 大写W表示一年中的星期数 echo date(‘t’); 本月是 28 天 echo date(‘z’); 今天是今年的第 36 天 小写t表示当前月份又多少天 小写z表示今天是本年中第几天 4,其他 echo date(‘T’); UTC 大写T表示服务器的时间区域设置 echo date(‘I’); 0 大写I表示判断当前是否为夏令时,为真返回1,否则为0 echo date(‘U’); 1170769424 大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。 echo date(‘c’); 2007-02-06T14:24:43+00:00 小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。 echo date(‘r’); Tue, 06 Feb 2007 14:25:52 +0000 小写r表示RFC822日期。 ——————————

Read MorePHP的日期时间函数date()

Sun将以10亿美元收购MySQL

Sun Microsystems今天早上公布了以8亿美元的现金和2亿美元期权收购开源数据库领导者MySQL AB的计划. 无论是对于Sun还是MySQL,这都是天作之合,MySQL它永远不缺用户,它是LAMP中的“M”,世界上绝大多数Blog和Web2.0程序依赖它运行,对于Sun来说,收购MySQL将让它的创始人著名的“网络就是计算机”言论迈进一大步,通过收购MySQL将有助于增强公司的数据库产品线,例如你可能会更准确地说, “网络加数据库就是计算机” . Sun微系统称,公司将以8亿美元的现金和MySQL的所有股票,并将MySQL提供价值约2亿美元的期权.Sun微系统称,MySQL的客户已包括了 Google、Facebook以及诺基亚等大公司,通过收购不仅将有助于增强公司的数据库产品线,而且还将增强公司在包括数据库市场的企业IT市场中的地位.通过收购MySQL,将使公司在价值150亿美元的数据库市场实现质的飞跃,并有助于公司同微软、IBM和甲骨文等竞争对手进行抗衡. Sun已经对开源事业孤注一掷,包括Solaris操作系统,Java和Ultra-Sparc,无一例外,它将成为对开源生态系统的最大贡献者,下一步Sun将会如何吞下并消化利用MySQL,让我们拭目以待.

Read MoreSun将以10亿美元收购MySQL