2009-07-16 29 views
1

我有许多PHP脚本,其中有数个数据库的行,每次迭代都会打开另一个额外的连接以获取未包含在原始选择中的额外数据。突然间,在这些脚本中间的某个地方,来自Apache的Connection正在执行脚本(并从mysql数据库中读取)重置。Windows上apache 2.2的奇怪的PHP 5.3行为?

在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之后?

UPDATE:

我可以在错误隔离到:

<? 
    $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的bug我填: http://bugs.php.net/bug.php?id=48943

UPDATE

这是mysql_close已知PHP 5.3的bug()时没有给出参数:

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

+0

当你使用mysql_close($ dbh)时会发生什么;? – jmucchiello 2009-07-16 15:48:01

+0

它得到修复然后! – Guillermo 2009-07-16 20:19:00

回答

0

我看着你的问题,因为我认为这可能类似于我之前见过的东西,但错误代码竟然是di fferent。尽管如此,我搜索了你的错误信息,发现这个链接: http://forums.tizag.com/showthread.php?t=4204 看起来你可能在文件中有一个循环引用(即php_file1包含php_file2,其中包括php_file1)。

+0

谢谢,但奇怪的是我没有任何循环参考!这工作没有问题在PHP 5.2.9 – Guillermo 2009-07-16 13:41:06

0

我几乎有相同的环境。与你的。 Win7 RC with 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)的所有权。在重新启动 后,这些都作为服务安装。有效。我不知道为什么。但递归地获取文件夹的所有权正在工作。我建议你尝试一下。

+0

你好, 这显然是一个问题与mysql_close()。 这是一个已知错误:http://bugs.php.net/bug.php ID = 48754 – Guillermo 2009-07-16 20:16:35

0

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

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


编辑

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

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

您是否尝试重新启动Apache?

+0

感谢LUC, 是我觉得我试过50次:-) – Guillermo 2009-07-16 20:14:44

0

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

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

2

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

+0

感谢安德鲁,这是的一个我试过的第一步。我做了,但是当没有连接指针作为参数给出时,这个显然是一个带有mysql_close()的PHP错误。 – Guillermo 2009-07-16 20:14:05