你可以阻止php while循环错误输出吗?

时间:2010-06-28 17:42:00

标签: php loops

我想知道是否有办法阻止while循环过早地错误输出或终止。我在那里抛出了一个尝试/捕获它似乎一直在终止。 (关于它终止的原因,我还在调试。)

    $stomp = $this->stomp;
    if(isset($queue) && strlen($queue) > 0) {
        error_log('Starting Monitor for: '.$queue);
        $stomp->subscribe($queue);

        while(true) {       
            $frame = $stomp->readFrame();
            if ($frame != null) { 
                // Callback must be an array: array('Class','Method);
                if(is_array($callback) && count($callback) == 2) {
                    try {
                        $body = $frame->body;                           
                        $callFunct = call_user_func_array($callback,array($body,$arguments));   
                        $stomp->ack($frame);                                
                    } catch(StompException $e) {
                        $msg = 'Stomp Monitor readFrame() Callback Fail: '.$e->getMessage();
                        $this->context->reportError('STOMP',array('errorDetails'=>$msg));
                    }
                } else {
                    error_log('Invalid Stomp Callback');
                }
            }
        }
    }   `

谢谢, 史蒂夫

1 个答案:

答案 0 :(得分:0)

没有什么可以突破循环,所以while(true)将一直持续到达到超时或某种形式的错误状态。作为后备,值得设置一个中断以突破循环条件,或者使用一个可以设置为false的while条件;

while (true) {
   // do some things
   break;
}

$x = true;
while ($x) {
   // do some things
   $x = false;
}

这样,退出循环就在你的掌控之中

但是,超时和其他致命错误仍然会正常终止脚本 如果你的代码突然出现在while循环中,你应该看到一些错误,除非你有一个错误处理程序来抑制它