当将 PHP 脚本从 PHP 5.2 迁移到 PHP 5.3 时,我偶然发现了以下问题:
该脚本的一般用途是数据挖掘。
我里面有一个向 MySQL 服务器添加数据的过程。
因为它确实是重复的,所以我(不久前)重写了它以使用 MySQLi,特别是准备好的语句,因为总共有 3 个可能的查询要执行。
无论如何,现在,在 PHP 5.3 服务器上,脚本在以下行崩溃:
mysqli_stmt_bind_result($prepCheck, $id1);
Where $prepCheck
是用创建的$prepCheck = mysqli_prepare($con, $checkQuery) or die("Error");
。该查询在 MySQL 服务器(即 $checkQuery)上运行良好,并且 PHP 代码在以前的服务器上也运行良好。
运行脚本strace
没有透露任何内容,因为其中的最后一件事是系统调用echo "Execute";
,即29936 19:44:18 write(1, "Execute\n", 8) = 8
.
连接对象不是FALSE
,即使是,它也应该因另一个错误而失败,对吧?
最奇怪的部分来了:
这个程序没有失败当我运行脚本时,限制访问的页面数并且脚本成功完成。但是,当我设置更高的限制时,它会失败,always在第一次调用此过程时,并且恰好在这一行上。
如果有人有任何可能导致此问题的建议,他们将不胜感激。
如果有人需要查看更大的图片,我可以粘贴代码,但是该过程非常长且无聊至极(可能这就是脚本失败的原因:)。
以下是脚本的启动方式:error_reporting(E_ALL); ini_set('display_errors', '1');
。
除了“神奇”之外,没有报告任何错误Segmentation fault
。我没有使用APC。
不确定它是否相关,但我使用 CLI 来运行脚本,而不是 Web 界面。
PHP版本是5.3.8,MySQL版本是5.1.56。内存限制设置为 64MB。
编辑:程序失败+一些其他代码上传到这里:http://codepad.org/KkZTxttQ http://codepad.org/KkZTxttQ。整个文件又大又丑,而且我认为无关紧要,所以我现在不发布它。失败的线路是 113。