Bonjour,
J'ai des dossiers d'archivage de fichiers, avec environ entre 5000 et 10000 fichiers.
Dedans, je ne voudrais scruter que ceux de moins de 24h.
Vu le nombre de répertoire que j'ai et la façon dont est conçue ma fonction, mon script complet dure environ 15 minutes, alors que je suis persuadé de faire la même chose en beaucoup moins de temps.
Ma fonction scanne chaque fichier, regarde la date de modif et met le fichier dans un tableau s'il a moins de 24h. (après, l'analyse des tableaux se fait rapidement)
Existe t'il une fonction ou des paramètres qui me permettraient de ne pas tout scanner ? un peu comme un powershell suivant : (qui met la liste des fichiers dans un fichier texte)
Ma fonction PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Get-ChildItem -Path "\Archive"| Where-Object {$_.LastWriteTime -ge (Get-Date).AddDays(-1)} | Select-Object Name,LastWriteTime | Export-Csv -Delimiter ";" -Path "\Controles\liste1.txt" -NoTypeInformation
Note : je ne peux plus utiliser le powershell pour des questions de droit, je n'ai accès aux archives que par FTP maintenant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function fichiersdemoinsde24h($resource, $directory = '.') { if (is_array($children = @ftp_rawlist($resource, $directory))) { $items = array(); $cpt = 0; $aujourdhui = time(); foreach ($children as $child) { $chunks = preg_split("/\s+/", $child); $cpt++; list($item['rights'], $item['number'], $item['user'], $item['group'], $item['size'], $item['month'], $item['day'], $item['time']) = $chunks; $item['type'] = $chunks[0][0] === 'd' ? 'directory' : 'file'; $timestampfichier = ftp_mdtm($resource, $chunks[8]); // Retourne la date de la dernière modification du fichier sur le FTP if ($aujourdhui-$timestampfichier<=86400) {echo "<br />\n" . $chunks[8]; $items[]=$chunks[8];} /*else {echo "<br /> Je prends pas";}*/; } return $items; } };
Merci
Partager