我想知道是否有一种方法可以防止while循环过早出错或终止。我在那里抛出了一个try/catch,它似乎一直在终止。(至于终止的原因,我还在调试中)。
$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');
}
}
}
} `谢谢,史蒂夫
发布于 2010-06-29 02:48:45
没有什么可以中断循环,因此while(true)将一直运行,直到它遇到超时或某种形式的错误条件。作为后备,值得设置一个break来中断on条件的循环,或者使用一个可以设置为false的while条件;
while (true) {
// do some things
break;
}或
$x = true;
while ($x) {
// do some things
$x = false;
}这样,退出循环就在你的控制之下了。
但是,如果您的代码正在中断while循环,那么超时和其他致命错误仍然会照常终止脚本,您应该会看到一些错误,除非您有一个错误处理程序来抑制它
https://stackoverflow.com/questions/3134755
复制相似问题