Heim  >  Artikel  >  php教程  >  F函数bug修正建议

F函数bug修正建议

WBOY
WBOYOriginal
2016-06-07 11:44:121208Durchsuche

删除缓存也很简单,使用:
F('data',NULL);
复制代码
第二个参数传入NULL,则表示删除标识为data的数据缓存。
支持批量删除功能,尤其是针对子目录缓存的情况,假设我们要删除user子目录下面的所有缓存数据,可以使用:
F('user/*',NULL);
又或者使用过滤条件删除,例如:
F('user/[^a]*',NULL);
文档中说删除子缓存目录内容用F('user/*',NULL);或者F('user/[^a]*',NULL);经测试发现无效。查看系统定义的F函数:function F($name, $value='', $path=DATA_PATH) {<br>     static $_cache = array();<br>     $filename = $path . $name . '.php';<br>     if ('' !== $value) {<br>         if (is_null($value)) {<br>             // 删除缓存<br>             return unlink($filename);<br>         } else {<br>             // 缓存数据<br>             $dir = dirname($filename);<br>             // 目录不存在则创建<br>             if (!is_dir($dir))<br>                 mkdir($dir);<br>             return file_put_contents($filename, strip_whitespace("<?php \nreturn " . var_export($value, true) . ";\n?>"));<br>         }<br>     }<br>     if (isset($_cache[$name]))<br>         return $_cache[$name];<br>     // 获取缓存数据<br>     if (is_file($filename)) {<br>         $value = include $filename;<br>         $_cache[$name] = $value;<br>     } else {<br>         $value = false;<br>     }<br>     return $value;<br> }当$value为null时执行删除操作即unlink($filename);而$filename = $path . $name . '.php';当我们传入F('user/*',NULL);时,就变成缓存目录/user/*.php,也就是执行了unlink(/user/*.php),而实际并没有这个文件,所以最后没有文件被删除。
改进建议:1。自己获取缓存目录下所有文件名,可以用scandir或者glob函数,然后循环删除。
2。修改F函数,增加对子目录内容的循环判断。或者直接删除缓存子目录
总之F函数没有实现批量删除。

AD:真正免费,域名+虚机+企业邮箱=0元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn