<?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;
|
|
}
|
|
}
|