You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

52 lines
1.4 KiB

<?php
namespace App\Services;
use Symfony\Component\Finder\Finder;
class FileService {
public function segmentFiles($baseDir)
{
if (!is_dir($baseDir)) {
return;
}
// $files = new Finder();
// $files->files()->in($baseDir);
$files = $this->scan_dir($baseDir);
$firstTime = true;
$counter = 0;
$dirCounter = 0;
$dirName = "";
foreach ($files as $file) {
if ($firstTime) {
$dirName = $baseDir . "/" . date("Y-m-d", filectime($baseDir . "/" . $file)) . "-$dirCounter";
if (!is_dir($dirName)) {
mkdir($dirName);
}
$dirCounter++;
$firstTime = false;
}
rename($baseDir . "/" . $file, $dirName . "/" . $file);
$counter++;
if ($counter % 1000 == 0) {
$firstTime = true;
}
// exit;
}
}
private function scan_dir($dir) {
$ignored = array(".", "..", ".svn", ".htaccess",".DS_Store");
$files = array();
foreach (scandir($dir) as $file) {
if (in_array($file, $ignored)) continue;
$files[$file] = filemtime($dir . '/' . $file);
}
asort($files);
$files = array_keys($files);
return ($files) ? $files : false;
}
}