我有很多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():
答案 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驱动程序。
除此之外,您是否可以重写脚本以便在每次迭代时不打开和关闭数据库?这真的是一种不好的做法,它可能是填充某种缓冲区的原因。