Heim > Fragen und Antworten > Hauptteil
Ich möchte PDF-Dateien, die älter als einen Monat sind, anhand ihres Dateinamens löschen. Wenn (heute – 1 Monat) beispielsweise „2022-06-01.pdf“ ist, dann möchte ich Dateien wie „2022-04-13.pdf“ und „2021-01-22.pdf“ löschen. Ich möchte meine Auswahlkriterien nicht auf tatsächlichen Änderungs- oder Erstellungsdaten basieren.
Beispiel (vorübergehend/)
2019-02-01.pdf 2020-07-01.pdf 2021-03-10.pdf 2021-08-04.pdf 2022-03-30.pdf 2019-02-27.pdf 2020-07-08.pdf 2021-03-17.pdf 2021-08-11.pdf 2022-04-06.pdf
HTML
oldFiles(); purgeOLD();
JS
function oldFiles() { // this is ok yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 30); actualYear = yesterday.getFullYear(); actualMonth = yesterday.getMonth() + 1; actualDay = yesterday.getDate(); if (actualMonth < "10") {actualMonth = "0" + actualMonth;} if (actualDay < "10") {actualDay = "0" + actualDay;} backtrack = actualYear +'-' +actualMonth +'-' +actualDay; } function purgeOLD () { // is this where the problem is ? var new_data = backtrack; var data; $.ajax({url: 'test.php', type: 'post', async: false, data: {user: new_data}}); }
PHP „test.php“
<?php // or is this ? $result = $_GET['user']; $rdm = $result .'.pdf'; $glob = glob("temp/2???-??-??.pdf"); foreach($glob as $file) { if ($file < $rdm) { {unlink('/home/example/public_html/temp/' .$file ."'"))} } } ?>
P粉1477476372024-02-26 19:51:10
我会完全在服务器端完成此操作。
DateTime
实例$lastMonth = new DateTimeImmutable('-1 month'); $cutoff = sprintf('%s.pdf', $lastMonth->format('Y-m-d')); $glob = glob("temp/2???-??-??.pdf"); foreach($glob as $file) { if (basename($file) < $cutoff) { unlink($file); } }