添加临时文件清理命令行
parent
267465d800
commit
865881b6a9
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
/**
|
||||||
|
* This is my open source code, please do not use it for commercial applications.
|
||||||
|
* For the full copyright and license information,
|
||||||
|
* please view the LICENSE file that was distributed with this source code
|
||||||
|
*
|
||||||
|
* @author Yuandong<837215079@qq.com>
|
||||||
|
* @link https://github.com/gzydong/hyperf-chat
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Command;
|
||||||
|
|
||||||
|
use App\Service\SplitUploadService;
|
||||||
|
use Hyperf\Command\Annotation\Command;
|
||||||
|
use Hyperf\Command\Command as HyperfCommand;
|
||||||
|
use Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Command
|
||||||
|
*/
|
||||||
|
class ClearFileCommand extends HyperfCommand
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var ContainerInterface
|
||||||
|
*/
|
||||||
|
protected $container;
|
||||||
|
|
||||||
|
public function __construct(ContainerInterface $container)
|
||||||
|
{
|
||||||
|
$this->container = $container;
|
||||||
|
|
||||||
|
parent::__construct('system:clear-file');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configure()
|
||||||
|
{
|
||||||
|
parent::configure();
|
||||||
|
$this->setDescription('清除拆分上传的临时文件!');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$this->line('文件清理中...');
|
||||||
|
|
||||||
|
di()->get(SplitUploadService::class)->clear();
|
||||||
|
|
||||||
|
$this->info('文件清理完成...');
|
||||||
|
}
|
||||||
|
}
|
|
@ -141,4 +141,21 @@ class SplitUploadService
|
||||||
'file_size' => $fileInfo->file_size
|
'file_size' => $fileInfo->file_size
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清理超过24小时的临时文件
|
||||||
|
*/
|
||||||
|
public function clear()
|
||||||
|
{
|
||||||
|
// 24小时前
|
||||||
|
$time = time() - 60 * 60 * 24 * 1;
|
||||||
|
|
||||||
|
FileSplitUpload::where('file_type', 1)->where('upload_at', '<', $time)->select('hash_name')->chunk(100, function ($rows) {
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
@di()->get(Filesystem::class)->deleteDir("tmp/{$row->hash_name}");
|
||||||
|
@FileSplitUpload::where('hash_name', $row->hash_name)->delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue