<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Computer, Electron and Technology &#187; error</title>
	<atom:link href="http://www.donevii.com/post/tag/error/feed" rel="self" type="application/rss+xml" />
	<link>http://www.donevii.com</link>
	<description>关注技术、移动互联网以及一切 GEEK &#38; NERD 的事情</description>
	<lastBuildDate>Wed, 21 Dec 2011 10:49:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PHP:set_error_handler &#8230;&#8230;need more</title>
		<link>http://www.donevii.com/post/350.html</link>
		<comments>http://www.donevii.com/post/350.html#comments</comments>
		<pubDate>Sat, 29 Sep 2007 10:17:41 +0000</pubDate>
		<dc:creator>dengwei</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.donevii.com/?p=350</guid>
		<description><![CDATA[本来想自己写个 error 处理的 logger 结果发现通过 set_error_handler 没办法捕获到 fatal error &#38; parse error 唉，真愁人呐。 在 php.net 上也没有找到办法，后来反到是在 zend.com 上找到了解决 catch fatal err... ]]></description>
			<content:encoded><![CDATA[<p>本来想自己写个 <a href="http://www.donevii.com/post/tag/error" class="st_tag internal_tag" rel="tag" title="Posts tagged with error">error</a> 处理的 logger 结果发现通过 set_<a href="http://www.donevii.com/post/tag/error" class="st_tag internal_tag" rel="tag" title="Posts tagged with error">error</a>_handler 没办法捕获到 fatal <a href="http://www.donevii.com/post/tag/error" class="st_tag internal_tag" rel="tag" title="Posts tagged with error">error</a> &amp; parse <a href="http://www.donevii.com/post/tag/error" class="st_tag internal_tag" rel="tag" title="Posts tagged with error">error</a> 唉，真愁人呐。</p>
<p>在 <a href="http://www.donevii.com/post/tag/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with php">php</a>.net 上也没有找到办法，后来反到是在 zend.com 上找到了解决 catch fatal error 的办法就是在 auto_prepend_file 和 auto_append_file 上做手脚。</p>
<p>prepend 的文件里面有一个 string 里面是个 error page 的 <a href="http://www.donevii.com/post/tag/html" class="st_tag internal_tag" rel="tag" title="Posts tagged with html">html</a> 包括一个 script 可以把错误信息发送到 <a href="http://www.donevii.com/post/tag/server" class="st_tag internal_tag" rel="tag" title="Posts tagged with server">server</a> 的一个 api 上。</p>
<p>而在 append 的文件里通过 ob_get_contents() 来把那个 string 给去掉，如果能去掉就说明程序中间的执行流程正确，无错，如果有 fatal error 则没有办法到达 append 文件这步，所以会显示那个 html 页面。</p>
<p>方法还可以，但是因为每个 php 都要 prepend &amp; append 可能效率会不行，和 Xuanyan 讨论了一小会暂时还是没有什么好办法来捕获 fatal &amp; parse error 。</p>
<p>:(</p>
]]></content:encoded>
			<wfw:commentRss>http://www.donevii.com/post/350.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

