еще раз про Exception

WMix

герр M:)ller
Партнер клуба
я правильно понимаю, что Fatal error под cli невозможно отловить? или можно каким-то образом заставить PHP бросить исключение?

PHP:
try{
	// beginTransaction()
	$a=null;
	$a->test();
}
catch(Exception $e){
	// rollBack()
	echo "поймал";
}
Код:
$  php ex.php 
PHP Fatal error:  Call to a member function test() on a non-object in xxxxxxxx.php on line 11
PHP Stack trace:
PHP   1. {main}() xxxxxxxx.php:0
так хочется откатить трансакцию.....
 

WMix

герр M:)ller
Партнер клуба
да вот чтот не откатывается... хотя да.. должна... будем искать...
а про поймать ошибку?
 

fixxxer

К.О.
Партнер клуба
только если через shutdown function извращаться, но это ппц
 

WMix

герр M:)ller
Партнер клуба
пробывал так,
PHP:
function shutdown() {
 if (($error = error_get_last())) {
  throw new Exception("fatal error");
  }
}
register_shutdown_function('shutdown');
не работает... но так и написано вобщем http://stackoverflow.com/a/3795403
 

fixxxer

К.О.
Партнер клуба
и куда ты там собрался исключение кидать?

колстэка-то нету уже :)

это имеет смысл только для финализирующих действий, типа там в лог нагадить, красивую 500ю отдать
 

WMix

герр M:)ller
Партнер клуба
вопрос то из-за трансакции возник, недопонял... почему вылетел, а запись осталась...
разобрался, я на клик запись сделал, и на демона индификатор передал, а там ошибка была... понятно что не откатилась запись...
 

fixxxer

К.О.
Партнер клуба
Чото я не понял, как без явного комита "запись осталась" ну да ладно
 

WMix

герр M:)ller
Партнер клуба
вот так

PHP:
public function createAction(){
Zend_Registry::get('queue')->send(json_encode(array(
    'action' => '...',   $model->insert(array());
)));
$this->_redirect("...");

}
PHP:
// демон
public function start(){
	//beginTransaction();
	try{
		// ERROR
	}
	catch( Exception $e ){}
}
 

Gas

может по одной?
WMix
ищи ошибку у себя или копайся в потрохах Zend'а, может он сам делает явный комит при изменении модели.
но без явного комита, данных в базе быть не может, хоть даже скрипт отвалился по exit или непойманному исключению.
 
Сверху