PHP脚本在mysql查询上暂停,没有异常抛出,并且在php错误日志中没有条目

时间:2011-08-18 17:27:45

标签: php

我有一个生成报告的脚本。对于大多数小部件*,它生成一个没有问题的报告。对于特定的小部件,它在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));

2 个答案:

答案 0 :(得分:1)

检查代码中的错误抑制运算符(@)和您正在调用的代码。

答案 1 :(得分:0)

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

error_reporting = E_ALL | E_STRICT  

这就足够了。