I have a basic cache system setup which saves a file based on the parameters in the url so that if that page gets viewed again it accesses the static file. eg if my url is
http://www.example.com/female/?id=1
I have a file located in a cache folder called id=1.html
female/cache/id=1.html
currently this is cached for a specified amount of time however I want it to always use the cached file unless the page is updated.
So I implemented the below php code.
<?
unlink('../' . $gender . '/cache/id=' . $_POST['id'] . '.html');
?>
this works fine however, some times there are additional parameters in my url. So currently I have the below files in my cache folder
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
But when I save my content only female/cache/id=1.html is removed.
How would I go about removing any file in this folder with the id=1
You could use glob
:
<?php
foreach (glob("female/cache/id=1*.html") as $filename) {
unlink($filename);
}
?>
Where the asterisk *
matches all the variations of the filename.
As an alternative, you can make the operation more concise using array_map()
:
<?php
array_map('unlink', glob('female/cache/id=1*.html'));
?>
http://php.net/manual/en/function.array-map.php
Be aware that array_map may be slower than a foreach loop: Performance of foreach, array_map with lambda and array_map with static function
However, this may no longer be the case under PHP 7.x. My results for the accepted answer's benchmark on 7.04:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With