<?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>@yuehei&#039;s blog &#187; PHP</title>
	<atom:link href="http://yuehei.37net.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://yuehei.37net.com</link>
	<description>记点东西</description>
	<lastBuildDate>Mon, 12 Dec 2011 10:23:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>zf增加.html的后缀，即可以实现静态化的插件</title>
		<link>http://yuehei.37net.com/2011/12/zend-framework-plugin-html/</link>
		<comments>http://yuehei.37net.com/2011/12/zend-framework-plugin-html/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 10:23:44 +0000</pubDate>
		<dc:creator>yuehei</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yuehei.37net.com/?p=183</guid>
		<description><![CDATA[之前是.php后缀的页面，如何只需把后缀改成.html，像：http://www.gudalu.com/index.php，访问：http://www.gudalu.com/index.html 就会自成生成静态文件呢？ 前段时间古大陆的cpu有点高，处理txt章节不给，决定搞成这种自动静态，zend framework很方便，三步搞定 1.创建一个ZendEx_Plugin_Html的插件，用来处理写html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 &#60;?Php /** * 静态化插件 * * @package tool */ class ZendEx_Plugin_Html extends Zend_Controller_Plugin_Abstract &#123; protected $_filePath; &#160; public function setFilePath&#40;$filePath&#41; &#123; $this-&#62;_filePath = $filePath; &#125; public function dispatchLoopShutdown&#40;&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>之前是.php后缀的页面，如何只需把后缀改成.html，像：<a href="http://www.gudalu.com/index.php">http://www.gudalu.com/index.php</a>，访问：<a href="http://www.gudalu.com/index.html">http://www.gudalu.com/index.html</a> 就会自成生成静态文件呢？</p>
<p>前段时间<a href="http://www.gudalu.com">古大陆</a>的cpu有点高，处理txt章节不给，决定搞成这种自动静态，zend framework很方便，三步搞定</p>
<p>1.创建一个ZendEx_Plugin_Html的插件，用来处理写html</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?Php</span>
<span style="color: #009933; font-style: italic;">/**
 * 静态化插件
 * 
 * @package tool
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> ZendEx_Plugin_Html <span style="color: #000000; font-weight: bold;">extends</span> Zend_Controller_Plugin_Abstract
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$_filePath</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setFilePath<span style="color: #009900;">&#40;</span><span style="color: #000088;">$filePath</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_filePath <span style="color: #339933;">=</span> <span style="color: #000088;">$filePath</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> dispatchLoopShutdown<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$htmlContent</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response<span style="color: #339933;">-&gt;</span>__toString<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">pathinfo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_filePath<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pathinfo</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dirname'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">mkdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pathinfo</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dirname'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #208080;">0777</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filePath</span><span style="color: #339933;">,</span> <span style="color: #000088;">$htmlContent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>1. 在入口把所有.html的请求全部转发到HtmlController中~</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000088;">$router</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$front</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRouter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$htmlRoute</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Controller_Router_Route_Regex<span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'[\d\w\/]+\.html'</span><span style="color: #339933;">,</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'module'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'default'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'html'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'action'</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'handle'</span>
		<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>2.HtmlController注册ZendEx_Plugin_Html插件,这里可以对uri进行处理</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * 静态化控制器
 * 
 * @author  yuehei
 * @package ex
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> HtmlController <span style="color: #000000; font-weight: bold;">extends</span> Core_Controller_Action
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> handleAction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$requestUri</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_request<span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRequestUri</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$requestUri</span> <span style="color: #339933;">=</span> <span style="color: #990000;">parse_url</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$requestUri</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$requestPath</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$requestUri</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'path'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// --- 通过条件定位对应的参数来静态化数据</span>
		<span style="color: #000088;">$module</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'default'</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$controller</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$action</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^\/index.html$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$requestPath</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rs</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$controller</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'index'</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$action</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'index'</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #666666; font-style: italic;">// --- 文章页</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^\/file\/([\d]+)\/index\.html$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$requestPath</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rs</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$rs</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$controller</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'file'</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$action</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'view'</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$controller</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$action</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">//$this-&gt;_showError('无法解析地址');</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_closeView<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response<span style="color: #339933;">-&gt;</span><span style="color: #004000;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Status'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'404 Not Found'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_forward<span style="color: #009900;">&#40;</span><span style="color: #000088;">$action</span><span style="color: #339933;">,</span> <span style="color: #000088;">$controller</span><span style="color: #339933;">,</span> <span style="color: #000088;">$module</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_closeView<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$filePath</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_app'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'_www'</span><span style="color: #339933;">,</span> APP_PATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$requestPath</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// --- 给更低的运行级别，在render之后运行</span>
		<span style="color: #000088;">$helperHtml</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZendEx_Plugin_Html<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$helperHtml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFilePath</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filePath</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$helperHtml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setRequest</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_request<span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setResponse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getFrontController</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registerPlugin</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$helperHtml</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://yuehei.37net.com/2011/12/zend-framework-plugin-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>国内虚拟主机架设dabr</title>
		<link>http://yuehei.37net.com/2009/10/dabr/</link>
		<comments>http://yuehei.37net.com/2009/10/dabr/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 01:43:17 +0000</pubDate>
		<dc:creator>yuehei</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[dabr]]></category>
		<category><![CDATA[国内]]></category>
		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://yuehei.37net.com/?p=11</guid>
		<description><![CDATA[基于dabr212修改的，下载附件，然后覆盖 common 目录下的 twitter.php 文件，请求API的速度大概在1秒左右比较慢，最好是自己用。 下载文件 update 20091030：国内的虚拟主机可以架设一个，将文件覆盖即可，方便手机访问。主要是将dabr原来curl请求 twitter api的方式，换成一个socket方试请求，使用一个twitter上推荐的，号称不会被封的ip，并且使用了https，测试功能一切正常。]]></description>
			<content:encoded><![CDATA[<p>基于dabr212修改的，下载附件，然后覆盖 common 目录下的 twitter.php 文件，请求API的速度大概在1秒左右比较慢，最好是自己用。</p>
<p><a href='http://yuehei.37net.com/wp-content/uploads/2009/10/twitter.rar'>下载文件</a></p>
<p>update 20091030：国内的虚拟主机可以架设一个，将文件覆盖即可，方便手机访问。主要是将dabr原来curl请求 twitter api的方式，换成一个socket方试请求，使用一个twitter上推荐的，号称不会被封的ip，并且使用了https，测试功能一切正常。</p>
]]></content:encoded>
			<wfw:commentRss>http://yuehei.37net.com/2009/10/dabr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

