我有一个生成报告的脚本。对于大多数小部件*,它生成一个没有问题的报告。对于特定的小部件,它在mysql查询期间在中间退出,并且500返回到浏览器。通过向php_error日志插入写入,我知道要执行的确切最后一行,并且它始终是相同的行。这不是暂停,因为其他小部件报告运行时间更长(并且它在大约10秒钟内爆炸)。
另外,我已经尝试运行它试图在phpadmin中运行的查询,它运行正常。
当这个中止发生时,我看到php_error.log中没有出现任何内容,apache的错误日志中没有任何内容,当我用try / catch包围有问题的语句时,没有异常被捕获。
我能看到的其他地方可能会显示出现了什么错误吗?
* by widget我不是指UI组件。我正在使用来自虚构公司虚构产品的小部件
附录============================================== ======================== 因为它被要求我发布了代码,虽然我认为问题不是代码,因为它适用于除了这一次以外的所有情况。这个特定案例的数据更有可能出现这个问题。
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));
答案 0 :(得分:1)
检查代码中的错误抑制运算符(@)和您正在调用的代码。
答案 1 :(得分:0)
尝试编辑错误php.ini文件,以显示警告和错误代码。
error_reporting = E_ALL | E_STRICT
这就足够了。