2004年05月22日

一个人事经理眼中的中国人 –约翰.堂恩

新闻类周刊的现状和发展前景 – teamowave
“中国第一周刊”初长成 — teamowave

2004年05月21日

这篇文章是我的csdn上跟其它人讨论时所写的, 没有怎么整理就转过来了. 希望可以对想了解mysql_pconnect()的工作方式的人有所帮助(虽然使用mysqli_xx函数时已经没有pconnect了:P)

———————-


php中mysql_pconnect()的实现方式:
其实mysql_pconnect()本身并没有做太多的处理, 它唯一做的只是在php运行结束后不主动close掉mysql的连接.

mysql_pconnect()与此同时mysql_connect()的区别:

cgi方式下:
在php经cgi方式运行时pconnect和connect是基本没有区别的, 因为cgi方式是每一个php访问起一个进程, 访问结束后进程也就结束了, 资源也全释放了.

apache模块方式下:
区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.

这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的.

但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.

例如:
若mysql最大连接数设为500, 而apache的最大同时访问数设为2000
假设所有访问都会要求访问db, 而且操作时间会比较长

当前500个请求的httpd都没有结束的时候…之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.

其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用.

而当DB操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因.


(反进来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. )


因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了..

就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问DB效率. 在这一点上. php的确比不上jsp.

就目前的这种情况, 如果并发量大的话, 我个人建议最好还用mysql_connect.


2004/04/07 22:03

2004年05月16日

news://news.cn99.com
国内最大的新闻组服务器,内含3万多个新闻组栏目,是国内能和国外新闻组服务器进行转信的新闻组。



news://news.newsfan.net
目前国内人气最旺的新闻组之一,里面有关于电脑、生活、科学、教育等很多方面的内容。



news://news.webking.com.cn  
以前国内最大的新闻组,后来关闭了一段时间。虽然重新开放后人气略有下降,但也是一个不错的新闻组。

2004年05月14日

The document briefly explains how to use C++ within a PHP extension.
It’s link is:
http://bugs.tutorbuddy.com/php5cpp/php5cpp/

(2004.06.10)
I had translated it into chinese:
http://www.donews.net/fishchen/archive/2004/06/10/27258.aspx

http://dev.mysql.com/doc/mysql/en/Roadmap.html

1.5 MySQL Development Roadmap


This section provides a snapshot of the MySQL development roadmap, including major features implemented or planned for MySQL 4.0, 4.1, 5.0, and 5.1. The following sections provide information for each release series.


The production release series is MySQL 4.0, which was declared stable for production use as of Version 4.0.12, released in March 2003. This means that future 4.0 development will be limited only to making bugfixes. For the older MySQL 3.23 series, only critical bugfixes will be made.


Active MySQL development currently is taking place in the MySQL 4.1 and 5.0 release series. This means that new features are being added to MySQL 4.1 and MySQL 5.0. Both 4.1 and 5.0 are available now in alpha status.


Before upgrading from one release series to the next, please see the notes at section 2.5 Upgrading/Downgrading MySQL.


Plans for some of the most requested features are summarized in the following table.




































Feature MySQL Version
Unions 4.0
Subqueries 4.1
R-trees 4.1 (for MyISAM tables)
Stored procedures 5.0
Views 5.0 or 5.1
Cursors 5.0
Foreign keys 5.1 (already implemented in 3.23 for InnoDB)
Triggers 5.1
Full outer join 5.1
Constraints 5.1