<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post/224/</link>
<title><![CDATA[[原创]一个浏览次数统计的函数]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[开发应用]]></category>
<pubDate>Sat, 24 Mar 2007 11:46:45 +0000</pubDate> 
<guid>https://atim.cn/post/224/</guid> 
<description>
<![CDATA[ 
	昨天在一个站上看到有人说怎样才能很好的统计一个网站的浏览次数,其实这一个问题是很多基础教程都会出现的一个例子<br/>一般都是直接用一个文件来当数据文件来写，其实这样也是没有问题的。正常情况下可以用来统计浏览数，但是如果对一个访问量大的站来说,可能是不对的.因为同一时间内，可能有几十个几百个人在浏览网站，那如果都对同一个文件进行读写，有可能会出现写入错误(ext2/3文件系统通过flock进行文件锁来控制写入错误)；或者有十个人同时浏览网站，而由于只有一个人能写入文件，其它九个人都被忽略了，那样就会小了九个浏览数。<br/>而我这个函数就是用来解决上面的两个问题，采用了文件读写锁，然后每次随机写某个分散文件内，分某个分散文件达到一定位数的时候就把它写入到总浏览，大大减小了同时对同一文件进行读写。<br/><div class="code"><br/>/**<br/> * 功能描述:对一个网站所以页面被浏览次数的统计<br/> * @Date:2007-3-24<br/> * @Copyright © bkkkd <br/> * @Site:http://atim.cn<br/>**/<br/>Function recordviewnum()<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$randnum=10;//最多的分散文件数<br/>&nbsp;&nbsp;&nbsp;&nbsp;$Updatesite=2;//当分散文件保存的浏览数达到几位时写入到总浏览数<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rand=rand(1,$randnum);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_path=&quot;./viewtotal/$rand.php&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_path=&quot;./viewtotal/set.php&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch($D_path);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch($T_path);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_size=filesize($D_path);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_size=filesize($T_path);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If($D_size&gt;=$Updatesite)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_fp=fopen($D_path,&quot;rb+&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($D_fp)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flock($D_fp,LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_viewnum=intval(fread($D_fp,$D_size));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_viewnum+=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($D_fp,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite($D_fp,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftruncate($D_fp,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($D_fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_fp=fopen($T_path,&quot;rb+&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($T_fp)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flock($T_fp,LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_viewnum=intval(fread($T_fp,$T_size));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_viewnum=$T_viewnum+$D_viewnum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($T_fp,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite($T_fp,$T_viewnum);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($T_fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $D_fp=fopen($D_path,&quot;rb+&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($D_fp)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flock($D_fp,LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_viewnum=intval(fread($D_fp,$D_size));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$D_viewnum+=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($D_fp,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite($D_fp,$D_viewnum);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftruncate($D_fp,strlen($D_viewnum));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($D_fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_fp=fopen($T_path,&quot;rb&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($T_fp)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flock($T_fp,LOCK_SH);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$T_viewnum=intval(fread($T_fp,$T_size));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($T_fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $T_viewnum;<br/>&#125;<br/></div><br/>Tags - <a href="https://atim.cn/tags/php/" rel="tag">php</a> , <a href="https://atim.cn/tags/%25E4%25BB%25A3%25E7%25A0%2581/" rel="tag">代码</a> , <a href="https://atim.cn/tags/%25E7%259F%25A5%25E8%25AF%2586/" rel="tag">知识</a>
]]>
</description>
</item><item>
<link>https://atim.cn/post/224/#blogcomment210</link>
<title><![CDATA[[评论] [原创]一个浏览次数统计的函数]]></title> 
<author>lee &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 24 Mar 2007 15:18:04 +0000</pubDate> 
<guid>https://atim.cn/post/224/#blogcomment210</guid> 
<description>
<![CDATA[ 
	不错的啊.嘿嘿<br/>加session_end判断更好了就
]]>
</description>
</item><item>
<link>https://atim.cn/post/224/#blogcomment213</link>
<title><![CDATA[[评论] [原创]一个浏览次数统计的函数]]></title> 
<author>Ella &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 24 Mar 2007 15:41:36 +0000</pubDate> 
<guid>https://atim.cn/post/224/#blogcomment213</guid> 
<description>
<![CDATA[ 
	小卡的倒装句用得真传神！哈哈哈～
]]>
</description>
</item><item>
<link>https://atim.cn/post/224/#blogcomment217</link>
<title><![CDATA[[评论] [原创]一个浏览次数统计的函数]]></title> 
<author>lee &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 25 Mar 2007 12:55:16 +0000</pubDate> 
<guid>https://atim.cn/post/224/#blogcomment217</guid> 
<description>
<![CDATA[ 
	session生存期啊.设置设置<br/>其实我没仔细看你程序,哈哈
]]>
</description>
</item><item>
<link>https://atim.cn/post/224/#blogcomment219</link>
<title><![CDATA[[评论] [原创]一个浏览次数统计的函数]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 25 Mar 2007 16:13:03 +0000</pubDate> 
<guid>https://atim.cn/post/224/#blogcomment219</guid> 
<description>
<![CDATA[ 
	<br/>这个是用于统计浏览次数<br/>所以不关注谁浏览了<br/><br/>我觉得里面最好的是那个分散记录浏览次数<br/>当达到一定数量时就会记录到总注昨次数上去主要是降低同时出现浏览的忽略次数
]]>
</description>
</item>
</channel>
</rss>