在Windows上使用apache 2.2的奇怪的php 5.3行为?

时间:2009-07-16 13:19:40

标签: php mysql

我有很多PHP脚本,对mysql的行进行了几次迭代 数据库,每次迭代打开另一个额外的连接,以获得原始选择中未包含的额外数据。突然,在theese脚本中间的某处,来自Apache的Connection在执行脚本时重置(并从mysql数据库中读取)。

在Apache的error.log中显示以下错误: 父:子进程退出,状态为255

系统完美地工作到5.2.9但不适用于5.3.0 5.3.1-dev,这就是为什么我的东西是与php5.3相关的问题。

我很抱歉,但是我无法在一个简短的脚本中重现这个问题,我甚至在这个php.net网站上打开了一个错误报告?

Windows 7 RC Apache 2.2.11

升级到php 5.3后,你们中的任何人都遇到过同样的问题吗?

更新

我可以将错误隔离到:

<?
    $dbh=mysql_connect ("localhost", "root", "mysqluser") or die 
('I cannot connect to the database because');
    mysql_select_db ("bbbac_globaldata") or die( "Unable to select 
database");


    mysql_close();

?>

注释掉mysql_close(),不会发生错误。

这是我填写的PHP错误: http://bugs.php.net/bug.php?id=48943

更新

当没有给出参数时,这是一个知道的php 5.3 bug与mysql_close():

http://bugs.php.net/bug.php?id=48754

5 个答案:

答案 0 :(得分:2)

您可能正在使用PHP 5.3 VC9。它在Vista和Windows 7上有Apache2.2的一些已知问题。下载并安装用VC6编译的版本。

答案 1 :(得分:0)

我查看了你的问题,因为我认为这可能类似于我以前见过的东西,但错误代码结果却不同了。尽管如此,我用Google搜索了您的错误消息并找到了此链接:   http://forums.tizag.com/showthread.php?t=4204 看起来你的文件中可能有循环引用(即php_file1包含php_file2,包括php_file1)。

答案 2 :(得分:0)

我几乎拥有相同的环境。和你的。 Win7 RC与xampp 1.7.1(Apache / 2.2.11(Win32)DAV / 2 mod_ssl / 2.2.11 OpenSSL / 0.9.8i PHP / 5.2.9和MySQL客户端版本:5.0.51a和Mysql Server版本:5.1.33 - 社区)

我首先看到了与php 5.2.9完全相同的问题。 在ntlogs apache服务退出255 bla bla ... 这是一个简单的脚本..然后我试图使用我自己的mysql包装器,它比简单的脚本更简单:)。那时候有一种奇怪的情况。一旦它退出,一旦工作。然后我试图到处寻找那个问题。因为你一无所知我找到了。 在Windows XP中,它没有问题。所以我认为这是一个win7问题。 UAC已被禁用。而且我试图取得整个xammp文件夹的所有权(其中包含所有apache php mysql filezillaftp)。重启后 这些都是作为服务安装的。有效。我不知道为什么。但递归获取文件夹的所有权是有效的。我建议你尝试一下。

答案 3 :(得分:0)

  

每次迭代都会打开另一个额外的连接

我不知道MySQL,但我猜你无法无限期地打开连接。

<小时/>

修改

我记得当我使用PostgreSQL时,我在Apache的日志文件中有一条奇怪的错误消息。

当我重新启动数据库后端时,我需要重新启动Apache。

您是否尝试重启Apache?

答案 4 :(得分:0)

php 5.3包含一个新的mysql-driver(mysqlnd)。您可能想要检查您是使用此驱动程序还是“旧”libmysql驱动程序。

除此之外,您是否可以重写脚本以便在每次迭代时不打开和关闭数据库?这真的是一种不好的做法,它可能是填充某种缓冲区的原因。