<?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>花太香齐的博客 &#187; php，404</title>
	<atom:link href="http://www.ieliwb.com/tag/php%ef%bc%8c404/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ieliwb.com</link>
	<description>灵感的来临，没有任何预兆；灵感的消失，也不会有告别仪式；用文字记下她们吧，让灵感永存……</description>
	<lastBuildDate>Wed, 04 Aug 2010 02:52:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>利用http 404错误实现镜像同步功能</title>
		<link>http://www.ieliwb.com/http-404-mirror/</link>
		<comments>http://www.ieliwb.com/http-404-mirror/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 03:41:02 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[PHP/WEB]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[php，404]]></category>

		<guid isPermaLink="false">http://www.ieliwb.com/%e5%88%a9%e7%94%a8http-404%e9%94%99%e8%af%af%e5%ae%9e%e7%8e%b0%e9%95%9c%e5%83%8f%e5%90%8c%e6%ad%a5%e5%8a%9f%e8%83%bd/</guid>
		<description><![CDATA[<blockquote><p>利用404错误做简易镜像同步功能，只针对html文件和图片等静态文件</p></blockquote>
<p><strong>实现方法：</strong></p>
<p>后台服务器：绑定2个域名，www.xxx.com 和 jx.xxx.com 主域（cms域，可以放在双线服务器上）</p>
<p>1号服务器：www.xxx.com 镜像站点1（电信1）<br />
2号服务器：www.xxx.com 镜像站点[......]</p><p class='read-more'><a href='http://www.ieliwb.com/http-404-mirror/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<blockquote><p>利用404错误做简易镜像同步功能，只针对html文件和图片等静态文件</p></blockquote>
<p><strong>实现方法：</strong></p>
<p>后台服务器：绑定2个域名，www.xxx.com 和 jx.xxx.com 主域（cms域，可以放在双线服务器上）</p>
<p>1号服务器：www.xxx.com 镜像站点1（电信1）<br />
2号服务器：www.xxx.com 镜像站点2（电信2）</p>
<p>3号服务器：www.xxx.com 镜像站点3（网通1）<br />
4号服务器：www.xxx.com 镜像站点4（网通2）</p>
<p>&#8230;&#8230;&#8230;.more&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>域名www.xxx.com需要作智能DNS解析，使不同地区的人访问不同的镜像。</p>
<p><strong>原理简介：</strong><br />
当你所在位置在网通1，访问www.xxx.com/a.html时，DNS智能解析被分配到3号服务器上，由于第一次访问时3号服务器上文件a.html并不存在,只是在后台服务器上有，3号服务器http此时将触发一个404页面不存在的错误，本文就是利用这个404来做镜像同步的，我们可以把404跳转页面指定到404.php，如apache添加配置：</p>
<blockquote><p>ErrorDocument	404	/404.php</p></blockquote>
<p>利用404.php来抓取cms后台服务器上(由于www.xxx.com做了智能解析，所以需绑定jx.xxx.com，通过抓取jx.xxx.com/a.html保存到本地)的内容并保存在本地，并输出抓取的数据确保即使是第一次访问也是成功的。以后访问a.html由于文件已经在本地了，所有直接返回本地数据（没有触发404错误）。</p>
<p><strong>404.php代码：</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">/**<br />&nbsp;+------------------------------------------------------------------------------<br />&nbsp;* HXPHP Mirror Fetch For Pictures OR Html File<br />&nbsp;+------------------------------------------------------------------------------<br />&nbsp;*</span><span style="color: Blue;"> @Author </span><span style="color: #ffa500;">ieliwb&lt;</span><span style="color: Blue;">ieliwb@gmail.com</span><span style="color: #ffa500;">&gt;<br />&nbsp;*</span><span style="color: Blue;"> @Copyright </span><span style="color: #ffa500;">(c)</span><span style="color: Blue;"> www.ieliwb.com</span><span style="color: #ffa500;"><br />&nbsp;+------------------------------------------------------------------------------<br />&nbsp;*/</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//var_dump($_SERVER);</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">//exit();</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Pargma:no-cache</span><span style="color: Navy;">\r\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Cache-Control:no-cache</span><span style="color: Navy;">\r\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #00008b;">$host</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">http://jx.xxx.com</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//主镜像域</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">$path</span><span style="color: Gray;"> = </span><span style="color: Blue;">trim</span><span style="color: Olive;">(</span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">REQUEST_URI</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//抓取路径</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #00008b;">$ext</span><span style="color: Gray;"> = </span><span style="color: Blue;">GetExt</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #ffa500;">//自动抓取远程静态文件本地化处理</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">in_array</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ext</span><span style="color: Gray;">,</span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">gif</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">jpeg</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">jpg</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">png</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">bmp</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">js</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">html</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">htm</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">shtml</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)))</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">//抓取兄弟镜像文件保存到本地</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">writeToFile</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Gray;">,</span><span style="color: Blue;">fetchFile</span><span style="color: Olive;">(</span><span style="color: #00008b;">$host</span><span style="color: Gray;">.</span><span style="color: #00008b;">$path</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">//返回数据流</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$path</span><span style="color: Gray;"> = </span><span style="color: Blue;">dirname</span><span style="color: Olive;">(</span><span style="color: Green;">__FILE__</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: #00008b;">$path</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//取本地绝对路径，避免出现不必要的错误</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">switch</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ext</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">gif</span><span style="color: #8b0000;">'</span><span style="color: Gray;">:<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;!</span><span style="color: Blue;">function_exists</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">imagecreatefromjpeg</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">exit</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-type: image/gif</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$im</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecreatefromgif</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">imagegif</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">break</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">png</span><span style="color: #8b0000;">'</span><span style="color: Gray;">:<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;!</span><span style="color: Blue;">function_exists</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">imagecreatefromjpeg</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">exit</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-type: image/png</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$im</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecreatefrompng</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">imagepng</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">break</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">jpg</span><span style="color: #8b0000;">'</span><span style="color: Gray;">:<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">jpeg</span><span style="color: #8b0000;">'</span><span style="color: Gray;">:<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">bmp</span><span style="color: #8b0000;">'</span><span style="color: Gray;">:<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;!</span><span style="color: Blue;">function_exists</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">imagecreatefromjpeg</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">exit</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Content-type: image/jpeg</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$im</span><span style="color: Gray;"> = </span><span style="color: Blue;">imagecreatefromjpeg</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">imagejpeg</span><span style="color: Olive;">(</span><span style="color: #00008b;">$im</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">break</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">default</span><span style="color: Gray;"> :<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: Blue;">file_get_contents</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">break</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">exit</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//取远程文件内容</span><span style="color: Gray;"><br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">fetchFile</span><span style="color: Olive;">(</span><span style="color: #00008b;">$url</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">function_exists</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">curl_init</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$ch</span><span style="color: Gray;"> = </span><span style="color: Blue;">curl_init</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Green;">or</span><span style="color: Gray;"> </span><span style="color: Green;">die</span><span style="color: Olive;">(</span><span style="color: Blue;">curl_error</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_setopt</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Gray;">,</span><span style="color: Blue;">CURLOPT_URL</span><span style="color: Gray;">,</span><span style="color: #00008b;">$url</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_setopt</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Gray;">,</span><span style="color: Blue;">CURLOPT_RETURNTRANSFER</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: Blue;">curl_exec</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">or</span><span style="color: Gray;"> </span><span style="color: Green;">die</span><span style="color: Olive;">(</span><span style="color: Blue;">curl_error</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_close</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">else</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: Blue;">file_get_contents</span><span style="color: Olive;">(</span><span style="color: #00008b;">$url</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #00008b;">$data</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//写入本地数据</span><span style="color: Gray;"><br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">writeToFile</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: #00008b;">$method</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">rb+</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #00008b;">$isflock</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: #00008b;">$ischeck</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #00008b;">$ischmod</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$file</span><span style="color: Gray;"> = </span><span style="color: Blue;">dirname</span><span style="color: Olive;">(</span><span style="color: Green;">__FILE__</span><span style="color: Olive;">)</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$file</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">createDir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$ischeck</span><span style="color: Gray;"> &amp;&amp; !</span><span style="color: Blue;">file_exists</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">exit</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;font color=&quot;red&quot;&gt;Forbidden!&lt;/font&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">touch</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$fp</span><span style="color: Gray;"> = </span><span style="color: Blue;">fopen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Gray;">,</span><span style="color: #00008b;">$method</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$isflock</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">flock</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fp</span><span style="color: Gray;">,</span><span style="color: Blue;">LOCK_EX</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fp</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$method</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">'</span><span style="color: Red;">rb+</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">ftruncate</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fp</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">flock</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fp</span><span style="color: Gray;">,</span><span style="color: Blue;">LOCK_UN</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">fclose</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fp</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$ischmod</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">chmod</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Gray;">,</span><span style="color: Maroon;">0755</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br /></span><span style="color: #ffa500;">//取后缀</span><span style="color: Gray;"><br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">GetExt</span><span style="color: Olive;">(</span><span style="color: #00008b;">$str</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Blue;">strtolower</span><span style="color: Olive;">(</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: #00008b;">$str</span><span style="color: Gray;">,</span><span style="color: Blue;">strrpos</span><span style="color: Olive;">(</span><span style="color: #00008b;">$str</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">.</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//创建目录</span><span style="color: Gray;"><br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">createDir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Gray;">,</span><span style="color: #00008b;">$mode</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0777</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$path</span><span style="color: Gray;"> = </span><span style="color: Blue;">dirname</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">is_dir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Blue;">createDir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">file_exists</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Olive;">))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$mk</span><span style="color: Gray;"> = </span><span style="color: Blue;">mkdir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Gray;">,</span><span style="color: #00008b;">$mode</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">chmod</span><span style="color: Olive;">(</span><span style="color: #00008b;">$path</span><span style="color: Gray;">,</span><span style="color: #00008b;">$mode</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">empty</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mk</span><span style="color: Olive;">))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">exit</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;font color=&quot;red&quot;&gt;CreatePathFail:</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$path</span><span style="color: Gray;"> .</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;/font&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Blue;">?&gt;</span></div></div>
<p>以上适用于中小型网站解决镜像同步问题，大型高并发网站还是整squid节点共享吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/http-404-mirror/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
