添加临时文件清理命令行

main
gzydong 2021-08-15 22:48:57 +08:00
parent 267465d800
commit 865881b6a9
2 changed files with 67 additions and 0 deletions

View File

@ -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('文件清理完成...');
}
}

View File

@ -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();
}
});
}
} }