ak8*_*k85 5 php regex caching unlink
我有一个基本的缓存系统设置,它根据url中的参数保存文件,这样如果再次查看该页面,它将访问静态文件.例如,如果我的网址是
http://www.example.com/female/?id=1
Run Code Online (Sandbox Code Playgroud)
我有一个名为id = 1.html的缓存文件夹中的文件
female/cache/id=1.html
Run Code Online (Sandbox Code Playgroud)
目前这是缓存指定的时间,但我希望它始终使用缓存的文件,除非页面更新.
所以我实现了下面的PHP代码.
<?
unlink('../' . $gender . '/cache/id=' . $_POST['id'] . '.html');
?>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但有时在我的网址中有其他参数.所以目前我的缓存文件夹中有以下文件
female/cache/id=1.html
female/cache/id=1&type=2.html
female/cache/id=1&type=3.html
female/cache/id=1&type=3&extra=4.html
Run Code Online (Sandbox Code Playgroud)
但是当我保存我的内容时,只删除了female/cache/id = 1.html.
如何删除id = 1的此文件夹中的任何文件
lee*_*ers 18
你可以使用glob:
<?php
foreach (glob("female/cache/id=1*.html") as $filename) {
unlink($filename);
}
?>
Run Code Online (Sandbox Code Playgroud)
星号*匹配文件名的所有变体.
作为替代方案,您可以使用以下命令使操作更加简洁array_map():
<?php
array_map('unlink', glob('female/cache/id=1*.html'));
?>
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/en/function.array-map.php
请注意,array_map 可能比 foreach 循环慢: Performance of foreach、带有 lambda 的 array_map 和带有静态函数的 array_map
然而,在 PHP 7.x 下可能不再是这种情况。我在 7.04 上接受的答案基准的结果:
| 归档时间: |
|
| 查看次数: |
5878 次 |
| 最近记录: |