PHP脚本在mysql查询上停止,不会引发异常,PHP错误日志中也没有条目

PHP脚本在mysql查询上停止,不会引发异常,PHP错误日志中也没有条目,php,Php,我有一个生成报告的脚本。对于大多数小部件,它生成的报告没有问题。对于特定的小部件,它在MySQL查询中退出,500返回到浏览器。通过在php_错误日志中插入写操作,我知道要执行的最后一行的确切位置,并且始终是同一行。这不是一个超时,因为其他小部件报告运行的时间更长(大约10秒后就会爆炸) 此外,我还尝试在phpadmin中运行它试图运行的查询,结果运行正常 当发生此中止时,我在php_error.log中看不到任何内容,在apache的错误日志中也看不到任何内容,并且当我用try/catch将有

我有一个生成报告的脚本。对于大多数小部件,它生成的报告没有问题。对于特定的小部件,它在MySQL查询中退出,500返回到浏览器。通过在php_错误日志中插入写操作,我知道要执行的最后一行的确切位置,并且始终是同一行。这不是一个超时,因为其他小部件报告运行的时间更长(大约10秒后就会爆炸)

此外,我还尝试在phpadmin中运行它试图运行的查询,结果运行正常

当发生此中止时,我在php_error.log中看不到任何内容,在apache的错误日志中也看不到任何内容,并且当我用try/catch将有问题的语句括起来时,不会捕获任何异常

是否有其他地方我可以看看,可能表明什么错误正在发生

*通过widget,我指的不是UI组件。我使用的widget是一家虚构公司的虚构产品

附录====================================================================== 因为它是被要求的,所以我发布了代码,虽然我认为问题不在于代码,因为它在所有情况下都能工作,除了这一次。这个问题更可能出现在这个特定案例的数据中

error_log('['.__FILE__.']['.__LINE__."] check");

$table = new metrics_sessions();

//here I print out the SQL statement that will eventually be executed
error_log('['.__FILE__.']['.__LINE__."] check: "."guider_slug=? ".($effective_mindate!=null?" and date>'".$effective_mindate."'":"").($effective_maxdate!=null?" and date<'".$effective_maxdate." 23:59:59'":"").($effective_version!=0 && $effective_version!="all"?" and version=".$specific_version:"").($effective_campaign!==null && $effective_campaign!="all" ?" and campaign='".$effective_campaign."'":"")." order by date");

// BELOW IS THE LAST LINE I SEE IN PHP ERROR
error_log('['.__FILE__.']['.__LINE__."] check"); 

try {

    $sessions = $table->Find("guider_slug=? ".($effective_mindate!=null?" and date>'".$effective_mindate."'":"").($effective_maxdate!=null?" and date<'".$effective_maxdate." 23:59:59'":"").($effective_version!=0 && $effective_version!="all"?" and version=".$specific_version:"").($effective_campaign!==null && $effective_campaign!="all" ?" and campaign='".$effective_campaign."'":"")." order by date",array($param_gslug));

    error_log('['.__FILE__.']['.__LINE__."] check");

}catch(Exception $e){

    error_log('['.__FILE__.']['.__LINE__."] check");
    error_log('Caught exception: '.$e->getMessage());
    error_log('File: '.$e->getFile());
    error_log('Line: '.$e->getLine());
    error_log('Trace: '.$e->getTraceAsString());

}

error_log('['.__FILE__.']['.__LINE__."] session count: ".count($sessions));
error_log('['.___.']['.___.'.]LINE__.]check”);
$table=新指标_会话();
//这里我打印出最终将执行的SQL语句

错误日志('['.'文件'.'.'.]['.'行'.'.'')检查:“'guider'.'slug=?”($effective'.\u mindate!=null?)和日期>“$effective'.\u mindate.”($effective'.\u maxdate!=null?“,$effective'.\u mindate.”($effective'.\u maxdate!=null?)和日期检查错误抑制运算符(@)在您的代码和正在调用的代码中。

请尝试编辑错误php.ini文件,以便显示警告和错误代码

error_reporting = E_ALL | E_STRICT  

这就足够了。

如果省略了特定的小部件,脚本是否已完成?还是总是在某个数字后停止?是否看到错误抑制符号(@)在该行附近的任何地方?或者在该行调用的函数中?如果是,请将其删除。@Chris我添加了代码中有问题的部分,尽管确定问题可能在数据中,但这里真正的问题是您没有得到允许调试的错误消息。因此$table->Find失败了?您是否查看了该代码的内部以了解问题看看是否有任何错误抑制?为后代添加了这个,因此我可以得到cred=PWell,我确实发现轰炸的不是查询。最终被调用的实际mysql_查询没有@,当我用语句将调用包围起来写入错误日志时,我看到了这两个语句。因此,它轰炸的位置介于g和g之间设置结果并实际从->Find()返回继续将日志写入放在中间点(二进制搜索),您很快就会找到麻烦的调用当查询返回的行数超过500000行时出现内存问题。将mysql\u查询返回的数组复制到它自己的结构中会杀死脚本。它从未返回错误消息。感谢您的帮助。