Mutare fisiere mai vechi de 30 de zile in alt folder
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
julian
- Mesaje:6
Mutare fisiere mai vechi de 30 de zile in alt folder
Colectez în fiecare zi fisiere într-un anumit foder. Vreau să am în folderul de colectare doar fisierele adunate din ultimele 30 de zile, pe cele mai vechi de 30 de zile nu vreau să le şterg de pe server, doar să le mut într-un alt folder.
Am găsit un script care ştergea fisierele mai vechi, eu am încercat să îl modific şi să îl fac să le mute. Ceva nu merge bine, nici nu le şterge pe cele vechi, nici nu le copiază în altă parte:
Cod: Selectaţi tot
<?php
$noi = '/proaspete/';
$vechi = '/arhiva/';
if (is_dir($noi)) {
if ($dh = opendir($noi)) {
while ($file = readdir($dh)) {
if(!is_dir($noi.$file)) {
if (filemtime($noi.$file) < strtotime('-30 days')) {
copy($noi, $vechi) or die("Nu pot copia din $noi in $vechi.");
}
if (copy($noi, $vechi)){
unlink($noi.$file);
}
}
}
}
}
?>
Deşi am setat permisiunile directorului "arhiva" la 777, nu am nimic în el, este gol iar fişierele vechi sunt neatinse. Iar asta fără să apară vre-un mesaj de eroare...
MarPlo
Mesaje:4343
Salut
Lipseste numele fiserului ($file) in copy(), plus repetarea functiei pt. unlink().
Daca fisiercul php e in acelasi director /root unde sunt si celelalte doua pt copiere /mutare, nu trebuie "/" la inceputul numelui directoarelor.
Incearca varianta asta:
Cod: Selectaţi tot
$noi = 'proaspete/';
$vechi = 'arhiva/';
if (is_dir($noi)) {
if ($dh = opendir($noi)) {
while ($file = readdir($dh)) {
if(!is_dir($noi.$file)) {
if (filemtime($noi.$file) < strtotime('-30 days')) {
if(copy($noi.$file, $vechi.$file)) unlink($noi.$file);
else exit("Nu pot copia din $noi in $vechi.");
}
}
}
}
}
julian
Mesaje:6
Am înţeles şi îţi mulţumesc pentru ajutor, acum scriptul merge. Îl bag in cronjobs şi am mai scăpat de o grijă
Tu ar trebui să trăişti veşnic! Lumea are tot timpul nevoie de tine.