public final function fatalHandler()

in provider/core/server/BaseServer.php [662:713]


	public final function fatalHandler()
	{
	    $error = error_get_last();
	    if (isset($error['type']))
	    {
	        switch ($error['type'])
	        {
	            case E_ERROR :
	            case E_PARSE :
	            case E_DEPRECATED:
	            case E_CORE_ERROR :
	            case E_COMPILE_ERROR :
	                $message = $error['message'];
	                $file = $error['file'];
	                $line = $error['line'];
	                $log = "$message ($file:$line)\nFSOF_Provider_Stack trace:\n";
	                $trace = debug_backtrace();
	                
	                foreach ($trace as $i => $t)
	                {
	                    if (!isset($t['file']))
	                    {
	                        $t['file'] = 'unknown';
	                    }
	                    if (!isset($t['line']))
	                    {
	                        $t['line'] = 0;
	                    }
	                    if (!isset($t['function']))
	                    {
	                        $t['function'] = 'unknown';
	                    }
	                    $log .= "#$i {$t['file']}({$t['line']}): ";
	                    if (isset($t['object']) && is_object($t['object']))
	                    {
	                        $log .= get_class($t['object']) . '->';
	                    }
	                    $log .= "{$t['function']}()\n";
	                }
	                
	                if (isset($_SERVER['REQUEST_URI']))
	                {
	                    $log .= '[QUERY] ' . $_SERVER['REQUEST_URI'];
	                }

	                //在临死之前立刻将错误信息回传给consumer,避免consumer一直等待直到超时
	                $local = FSOFSystemUtil::getServiceIP();
	                $result = "error: {$this->processName}[{$local}]:".$message."in {$file}|{$line}";
	                $this->sendFatelMessage($result,false,true);
	        }
	    }
	}