<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[简单的PHP日志函数]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 02:15:40 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	生成txt格式的日志文件<br/><div class="code"><br/>/**<br/> * 日志记录，按照&quot;Y-m-d.log&quot;生成当天日志文件<br/> * 日志路径为：入口文件所在目录/logs/$type/当天日期.log.php，例如 /logs/error/2012-01-05.log.php<br/> * @param string $content 日志内容<br/> * @param string $type 对应logs目录下的子文件夹名<br/> * @return bool true/false 返回写入的字符数，出现错误时则返回 FALSE 。<br/> */<br/>function writelog($content = &quot;&quot;, $type = &quot;&quot;)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;date_default_timezone_set(&#039;PRC&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;//判断日志根目录是否存在，不存在则创建<br/>&nbsp;&nbsp;&nbsp;&nbsp;$log_root = getcwd() . DIRECTORY_SEPARATOR . &#039;logs&#039;;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;$log_root = ROOT_PATH . &#039;logs&#039;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($log_root)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir($log_root, 0777);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//如传入第二个参数，则生成子文件夹；否则在根目录创建日志<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($type) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root . DIRECTORY_SEPARATOR . $type;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($dir)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!mkdir($dir, 0777, true)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<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;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$filename = $dir . DIRECTORY_SEPARATOR . date(&quot;Y-m-d&quot;) . &#039;.log.txt&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($content)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$content = print_r($content, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$ss = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 1; $i &lt;= 115; $i++) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ss .= &#039;-&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$exec_url = &#039;http://&#039; . $_SERVER&#91;&#039;SERVER_NAME&#039;&#93; . $_SERVER&#91;&quot;REQUEST_URI&quot;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//组装数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &quot;&#92;r&#92;n&quot; . &#039;time:&#039; . date(&quot;Y-m-d H:i:s&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. &quot;&#92;r&#92;n&quot; . &#039;exec_url:&#039; . $exec_url;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str .= &quot;&#92;r&#92;n&quot; . &#039;content:&#039; . $content<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. &quot;&#92;r&#92;n&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. $ss;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!$fp = @fopen($filename, &quot;ab&quot;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$res = fwrite($fp, $str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_UN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $res;<br/>&#125;<br/></div><br/><br/>生成php格式的日志文件<br/><div class="code"><br/>/**<br/> * 日志记录，按照&quot;Y-m-d.log&quot;生成当天日志文件<br/> * 日志路径为：入口文件所在目录/logs/$type/当天日期.log.php，例如 /logs/error/2012-01-05.log.php<br/> * @param string $content 日志内容<br/> * @param string $type 对应logs目录下的子文件夹名<br/> * @return bool true/false 返回写入的字符数，出现错误时则返回 FALSE 。<br/> */<br/>function write_log($content = &quot;&quot;, $type = &quot;&quot;)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;date_default_timezone_set(&#039;PRC&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;//判断日志根目录是否存在，不存在则创建<br/>&nbsp;&nbsp;&nbsp;&nbsp;$log_root = getcwd() . DIRECTORY_SEPARATOR . &#039;logs&#039;;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;$log_root = ROOT_PATH . &#039;logs&#039;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($log_root)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir($log_root, 0777);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//如传入第二个参数，则生成子文件夹；否则在根目录创建日志<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($type) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root . DIRECTORY_SEPARATOR . $type;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is_dir($dir)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!mkdir($dir, 0777, true)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<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;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dir = $log_root;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//判断日志文件是否存在,以及内容是否为数组，不是数组则删除文件;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$filename = $dir . DIRECTORY_SEPARATOR . date(&quot;Y-m-d&quot;) . &#039;.log.php&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;@$logs = include $filename;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($logs &amp;&amp; !is_array($logs)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink($filename);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$logs = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//将时间和内容写入日志<br/>&nbsp;&nbsp;&nbsp;&nbsp;$exec_url = &#039;http://&#039; . $_SERVER&#91;&#039;SERVER_NAME&#039;&#93; . $_SERVER&#91;&quot;REQUEST_URI&quot;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//组装数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this_log = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;time&quot; =&gt; date(&quot;Y-m-d H:i:s&quot;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;exec_url&#039; =&gt; $exec_url,<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this_log&#91;&#039;content&#039;&#93; = $content;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$logs&#91;&#93; = $this_log;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &quot;&lt;?php &#92;r&#92;n return &quot; . array_eval($logs) . &quot;;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!$fp = @fopen($filename, &quot;wb&quot;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_EX);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$res = fwrite($fp, $str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;flock($fp, LOCK_UN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $res;<br/>&#125;<br/>/**<br/> * @desc 数组转换成字串<br/> * @param $array<br/> * @param bool $format<br/> * @param int $level<br/> * @return string<br/> */<br/>function array_eval($array, $format = false, $level = 0)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$space = $line = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!$format) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 0; $i &lt;= $level; $i++) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$space .= &quot;&#92;t&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$line = &quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$evaluate = &#039;array&#039; . $line . $space . &#039;(&#039; . $line;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$comma = $space;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($array as $key =&gt; $val) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key = is_string($key) ? &#039;&#92;&#039;&#039; . addcslashes($key, &#039;&#92;&#039;&#92;&#92;&#039;) . &#039;&#92;&#039;&#039; : $key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$val = !is_array($val) &amp;&amp; (!preg_match(&#039;/^&#92;-?&#92;d+$/&#039;, $val) &#124;&#124; strlen($val) &gt; 12) ? &#039;&#92;&#039;&#039; . addcslashes($val, &#039;&#92;&#039;&#92;&#92;&#039;) . &#039;&#92;&#039;&#039; : $val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($val)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$evaluate .= $comma . $key . &#039; =&gt; &#039; . array_eval($val, $format, $level + 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$evaluate .= $comma . $key . &#039; =&gt; &#039; . $val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$comma = &#039;,&#039; . $line . $space;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$evaluate .= $line . $space . &#039;)&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $evaluate;<br/>&#125;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 简单的PHP日志函数]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>