存档

文章标签 ‘PHP’

Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计[转载]

2010年5月6日 admin 没有评论

前言:本文阐述的是一款经过生产环境检验的千万级数据全文检索(搜索引擎)架构。本文只列出前几章的内容节选,不提供全文内容。

在DELL PowerEdge 6850服务器(四颗64 位Inter Xeon MP 7110N处理器 / 8GB内存)、RedHat AS4 Linux操作系统、MySQL 5.1.26、MyISAM存储引擎、key_buffer=1024M环境下实测,单表1000万条记录的数据量(这张MySQL表拥有int、 datetime、varchar、text等类型的10多个字段,只有主键,无其它索引),用主键(PRIMARY KEY)作为WHERE条件进行SQL查询,速度非常之快,只耗费0.01秒。

阅读全文…

分类: 技术应用 标签: , ,

PHP 5.2.13 发布(修复40多个bug)

2010年2月26日 admin 没有评论

PHP是一种新型的CGI程序编写语言,易学易用,运行速度快,可以方便快捷地编写出功能强大,运行速度快,并可同时运行于 Windows、Unix、Linux平台的Web后台程序, 内置了对文件上传、密码认证、Cookies操作、邮件收发、动态GIF生成等功能,PHP 直接为很多数据库提供原本的连接,包括Oracle、Sybase、Postgres、Mysql、Informix、Dbase、Solid、 Access等,完全支持ODBC接口,用户更换平台时,无需变换PHP代码,可即拿即用.

http://cn.php.net/distributions/php-5.2.13.tar.bz2 (源码)
http://cn.php.net/distributions/php-5.2.13-Win32.zip (二进制包)
查看ChangeLog: http://www.php.net/ChangeLog-5.php#5.2.13

Security Enhancements and Fixes in PHP 5.2.13:

  • Fixed safe_mode validation inside tempnam() when the directory path does not end with a /). (Martin Jansen)
  • Fixed a possible open_basedir/safe_mode bypass in the session extension identified by Grzegorz Stachowiak. (Ilia)
  • Improved LCG entropy. (Rasmus, Samy Kamkar)

Key enhancements in PHP 5.2.13 include:

  • Fixed bug #50940 Custom content-length set incorrectly in Apache sapis. (Brian France, Rasmus)
  • Fixed bug #50847 (strip_tags() removes all tags greater then 1023 bytes long). (Ilia)
  • Fixed bug #50661 (DOMDocument::loadXML does not allow UTF-16). (Rob)
  • Fixed bug #50632 (filter_input() does not return default value if the variable does not exist). (Ilia)
  • Fixed bug #50540 (Crash while running ldap_next_reference test cases). (Sriram)
  • Fixed bug #49851 (http wrapper breaks on 1024 char long headers). (Ilia)
  • Over 30 other bug fixes.
分类: 技术应用 标签:

PHP性能分析工具XHProf

2009年12月11日 admin 没有评论

XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。基于浏览器的性能分析用户界面能更容易查看,或是与同行们分享成果。也能绘制调用关系图。在数据收集阶段,它记录调用次 数的追踪和包容性的指标弧在动态callgraph的一个程序。它独有的数据计算的报告/后处理阶段。在数据收集时,XHProfd通过检测循环来处理递 归的函数调用,并通过给递归调用中每个深度的调用一个有用的命名来避开死循环。
XHProf的轻量级性质和汇聚功能,使得它非常适合用于收集“生产环境”的性能统计数据的统计。

一、编译安装XHProf
[root@localhost src]# wget http://pecl.php.net/get/xhprof-0.9.2.tgz
[root@localhost src]# tar zxf xhprof-0.9.2.tgz
[root@localhost src]# cd xhprof-0.9.2
[root@localhost xhprof-0.9.2]# cp -r xhprof_html xhprof_lib /var/www/html/
[root@localhost xhprof-0.9.2]# cd extension/
[root@localhost extension]# /usr/local/webserver/php/bin/phpize
[root@localhost extension]# ./configure  –with-php-config=/usr/local/webserver/php/bin/php-config

二、配置 php.ini 文件
vi vi /usr/local/webserver/php/etc/php.ini  修改php.ini
[xhprof]
extension=xhprof.so
;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
xhprof.output_dir=<directory_for_storing_xhprof_runs>

OK 重启WEB服务器。为了更加清晰显示程序执行、调用结构,安装Graphviz。

三、安装Graphviz:
[root@localhost src]# wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
[root@localhost src]# tar zxf graphviz-2.24.0.tar.gz
[root@localhost graphviz-2.24.0]# cd graphviz-2.24.0
[root@localhost graphviz-2.24.0]# ./configure
[root@localhost graphviz-2.24.0]# make
[root@localhost graphviz-2.24.0# make install

四、应用XHProf
客户端能很灵活地保存他们从XHProf运行中得到的XHProf原始数据。用户界面层的XHProf提供了一个 iXHProfRuns接口(见xhprof_lib/utils/xhprof_runs.php ),客户端可以利用。这使得客户端能够告诉用户界面层,如何获取XHProf运行后产生的对应数据。
XHProf的UI 库自带的有一个基于文件的iXHProfRUns接口实现,即“ XHProfRuns_Default”(见xhprof_lib/utils/xhprof_runs.php)。这个自带的实现将XHProf运行结 果存在ini配置的xhprof.output_dir参数指定的某个目录下。
一次XHProf运行,必须用一个命名空间和运行编号来唯一确定。
假设使用iXHProfRuns接口的XHProfRuns_Default这个默认实现方式,如:

//xhprofStart.php 文件
<?php
$XHPROF_DEBUG     =   FALSE;
$debugUserIDArray =   array(
123456     =>     1,
456152  =>  1,
);
if (function_exists('xhprof_enable') && !empty($debugUserIDArray[$winduid]))
{
$XHPROF_DEBUG   =   TRUE;
}

if ($XHPROF_DEBUG)
{
include_once “/var/www/html/xhprof_lib/utils/xhprof_lib.php”;
include_once “/var/www/html/xhprof_lib/utils/xhprof_runs.php”;
xhprof_enable(); //start profiling
}

?>

//xhprofEnd.php 文件
<?php
if (TRUE    ==  $XHPROF_DEBUG)
{
//stop profiler
$xhprof_data    =   xhprof_disable();
$xhprof_runs    =   new XHProfRuns_Default();
$run_id         =   $xhprof_runs->save_run($xhprof_data, “xhprof_foo”);
echo “—————\n”.
“<a href=’/xhprof_html/index.php?run=$run_id&source=xhprof_foo’>xhprof</a>\n”.
“—————\n”;
}
echo ‘<!– xhprof –>’;
?>

程序中应用:
include /var/www/html/xhprofStart.php
// run program
….
include /var/www/html/xhprofEnd.php

将profile开关程序放在你所要进行分析的程序部分,就会将运行结果保存在xhprof.output_dir ini参数指定的特定目录下。文件的名称可能会是23dffaa3a3f66.xhprof_foo类似的文件; 两部分分别是运行编号(23dffaa3a3f6)和命名空间(xhprof_foo)。


最后,一些术语解释:
1. Inclusive Time (或子树时间):包括子函数所有执行时间。
2. Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。
3. Wall时间:花去了的时间或挂钟时间。
4. CPU时间:用户耗的时间+内核耗的时间
更多:http://mirror.facebook.net/facebook/xhprof/doc.html

分类: 技术应用 标签: ,

SpeedPHP 2.0.876

2009年12月7日 admin 没有评论

SpeedPHP是一款全功能的国产PHP应用框架系统。在提高团队开发效率、容易学习及使用、轻量级架构以增加执行速度等方面有着突出的表现。第 二版的SpeedPHP框架,增加了以下的功能:增加生成真实HTML文件的spHtml、增加函数/数据库缓存程序spCache等数十项功能和90多 项配置。 第二版的SpeedPHP框架,增加了以下的功能:
增加生成真实HTML文件的spHtml
增加函数/数据库缓存程序spCache,数据库操作速度大幅度提高
增加简单强大的spVerifier数据验证程序
增加一对一,一对多,多对多等数据表表间关联的支持
增加数据分页程序
加入系统钩子,支持扩展程序开发
加入视图钩子,支持视图扩展开发
支持PATH_INFO,美化程序网址
加入Smarty支持,自动模板输出等视图功能
增加spArgs获取网络输入输出
增加多语言的支持
优化spUrl支持真实HTML文件及PATH_INFO
增加至90多项程序配置,让开发者更容易DIY自己的框架
支持程序配置快速写入
在文件读写程序中加入过期时间设置
优化路由程序,程序访问更智能更稳定。
优化载入和类初始化工具
统一框架内部异常提示

SpeedPHP2.0下载:http://speedphp.com/download
Google项目托管地址:http://code.google.com/p/speedphp/

分类: 技术应用 标签:

Nginx 0.7.x + PHP 5.2.10(FastCGI)搭建支持高并发量的Web服务器

2009年12月3日 admin 没有评论

Nginx (”engine x”) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

一、为什么选择Nginx
1、在高连接并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达 50,000 个并发连接数的响应, Nginx选择了 epoll and kqueue 作为开发模型。

2、 Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

3、作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器。

为什么 Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的 Squid、Memcached都采用的是epoll网络I/O模型。其基本原理请见我的另一篇文章:Linux服务器网络开发模型

二、Nginx的安装以及配置
系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.2+
1、获取相关的开源程序:(适用CentOS操作系统)利用CentOS Linux系统自带的yum命令安装、升级所需的程序库。
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

阅读全文…

分类: 技术应用 标签: , ,