PHP5一直以来的bug!

原创 2004年08月25日 18:18:00

  PHP5加入了很多新性能,这里不加多评。我只是观测到一个PHP5在windows操作系统上(尤其是2000、2003)上的一个现象:

  默认安装、配置情况下,在100个用户读取一个较大php文件的时候,在error.log文件你会发现不定期的启动信息:

[Wed Aug 25 17:59:15 2004] [notice] Apache/2.1.0-dev (Win32) PHP/5.0.2-dev configured -- resuming normal operations
[Wed Aug 25 17:59:15 2004] [notice] Server built: Aug 25 2004 16:03:58
[Wed Aug 25 17:59:15 2004] [notice] Parent: Created child process 988
[Wed Aug 25 17:59:15 2004] [notice] Digest: generating secret for digest authentication ...
[Wed Aug 25 17:59:15 2004] [notice] Digest: done
[Wed Aug 25 17:59:15 2004] [notice] Child 988: Child process is running
[Wed Aug 25 17:59:15 2004] [notice] Child 988: Acquired the start mutex.
[Wed Aug 25 17:59:15 2004] [notice] Child 988: Starting 250 worker threads.
[Wed Aug 25 17:59:15 2004] [notice] Child 988: Starting thread to listen on port 8000.
[Wed Aug 25 17:59:15 2004] [notice] Child 988: Starting thread to listen on port 80.

  想想看:你肯定默认设置MaxRequestsPerChild=0。按照Apache2官方的说法,child process应该是永不退出才对。问题就出来了。为什么会自动重启呢?究竟是Apache2的bug还是PHP5的bug?那么继续往下看,你就会发现是什么回事。

  有了问题总需要找到解决方案。深入代码学习是一种最好的办法。PHP与Apache2的结合是php5apache2.dll文件。首先去掉php的支持,看看静态文本会不会造成同样的问题(这是一个非常愚蠢的想法)。因为Apache2本身对html文件支持是绰绰有余,而且在同类的web产品中,Apache2的这方面的性能恰恰最出众。如果要实际测试会不会出现这样的问题,那么找一个大的静态文本,远程用ab命令测试,比如:ab -n2000 -c64 -dS http://172.16.2.1。结果表明没有任何问题,就正如所推理的那样。

  结果就出来了,肯定是PHP5与Apache2的结合出了问题。找到PHP5的Apache2的handler程序。打开sapi_apache2.c。Apache2重启证明有abort产生,我们就找abort字符。果不然发现两个r->connection->aborted。同时在google上一搜索,发现类似于这样的bug report:http://bugs.php.net/bug.php?id=14542。如果不熟悉php的源代码编程,那么你直接将两个“ || r->connection->aborted”去掉,然后编译就会发现:问题解决了。

  想想整个过程,思维最为重要。往往在没有头绪的时候往往需要认真思索。

一直以来

一直以来,我都是一个比较感性的孩子,哪怕仅仅是生命中的一个过客也会给我留下很深的印象。        不知道从什么时候起,我的心里多了一个你,每天除了必须的学习娱乐之外,都会想起你;         ...
  • yangwen19890925
  • yangwen19890925
  • 2010-11-15 10:52:00
  • 55

一直以来伴随我的一些学习习惯(part3)

一直以来伴随我的一些学习习惯(part3)By 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba)TopLanguage(https://groups.go...
  • pongba
  • pongba
  • 2008-09-17 14:25:00
  • 62922

php5多重继承的bug

 上面的代码执行时会找报错:Fatal error: Class 'b' not found。 分析这个问题,是运行阶段出错,经过分析PHP的编译,执行过程,得出如下的parsing顺序…star...
  • bl1988530
  • bl1988530
  • 2011-03-16 13:43:00
  • 1656

zz 我曾经是一个那样任性的MM

发信人: Tiffany0214 (nini), 信区: Love标  题: zz 我曾经是一个那样任性的MM发信站: 小天鹅 BBS站 (Thu Feb 11 11:41:31 2010), 站内 ...
  • gnuhpc
  • gnuhpc
  • 2010-02-12 21:27:00
  • 1590

关于php5.3无法连接到MySQL

刚刚在本机上搭建Discuz!论坛的时候,到了建立数据库的那一阶段一直出错,搞了半天才知道为什么。。。 提示错误的代码如下:A connection attempt failed because th...
  • Sevan7
  • Sevan7
  • 2010-10-12 17:34:00
  • 5541

T+0交易技巧

    目前沪深股市实行的是“t+1”交易制度,所谓“t+1”是指投资者买入一只股票,当天不能卖出;而“t+0”交易制度是指当天买入的股票当天就可以卖出,甚至一天可做多次交易。   “t+1”制度下也...
  • jojoy_828
  • jojoy_828
  • 2009-08-18 12:00:00
  • 1385

ubuntu 16.04安装php5

$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo ap...
  • caiqiiqi
  • caiqiiqi
  • 2017-04-26 15:38:23
  • 955

php7和php5区别

1、php标量类型和返回类型声明 #主要分为两种模式,强制性模式和严格模式 declare(strict_types=1) #1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模...
  • li_xue_zhao
  • li_xue_zhao
  • 2018-04-03 11:30:25
  • 503

两个php写的爬虫程序

网上遇到的两个php写的爬虫程序,感觉不错,收集进来,一块瞅瞅: sphider:(http://www.sphider.eu/) Sphider is a popular open-source...
  • dj0379
  • dj0379
  • 2011-10-27 08:43:49
  • 3021

PHP5 完整官方 中文教程

  • 2010年03月08日 10:42
  • 2.48MB
  • 下载
收藏助手
不良信息举报
您举报文章:PHP5一直以来的bug!
举报原因:
原因补充:

(最多只允许输入30个字)