for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
/**
* balloon
*
* @copyright Copryright (c) 2012-2018 gyselroth GmbH (https://gyselroth.com)
* @license GPL-3.0 https://opensource.org/licenses/GPL-3.0
*/
namespace Balloon\Async;
use MongoDB\BSON\UTCDateTime;
use MongoDB\Database;
use Psr\Log\LoggerInterface;
use TaskScheduler\AbstractJob;
class CleanTempStorage extends AbstractJob
{
* Databse.
* @var Database
protected $db;
* Logger.
* @var LoggerInterface
protected $logger;
* Default data.
* @var array
protected $data = [
'max_age' => 172800,
];
* Constructor.
public function __construct(Database $db, LoggerInterface $logger)
$this->db = $db;
$this->logger = $logger;
}
* Start.
public function start(): bool
$lt = (time() - $this->data['max_age']) * 1000;
$result = $this->db->selectCollection('fs.files')->find([
'uploadDate' => ['$lt' => new UTCDateTime($lt)],
'metadata.temporary' => true,
]);
$count = 0;
$gridfs = $this->db->selectGridFSBucket();
foreach ($result as $blob) {
$gridfs->delete($blob['_id']);
++$count;
$this->logger->info('found ['.$count.'] temporary storage blobs for cleanup', [
'category' => get_class($this),
return true;