1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
<?php
class JobeetCleanupTask extends sfBaseTask
{
protected function configure()
{
$this->addOptions(array(
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application', 'frontend'),
new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environement', 'prod'),
new sfCommandOption('days', null, sfCommandOption::PARAMETER_REQUIRED, '', 90),
));
$this->namespace = 'jobeet';
$this->name = 'cleanup';
$this->briefDescription = 'Cleanup Jobeet database';
$this->detailedDescription = <<<EOF
The [jobeet:cleanup|INFO] task cleans up the Jobeet database:
[./symfony jobeet:cleanup --env=prod --days=90|INFO]
EOF;
}
protected function execute($arguments = array(), $options = array())
{
$databaseManager = new sfDatabaseManager($this->configuration);
// cleanup Lucene index
$index = Doctrine::getTable('JobeetJob')->getLuceneIndex();
$q = Doctrine_Query::create()
->from('JobeetJob j')
->where('j.expires_at < ?', date('Y-m-d'));
$jobs = $q->execute();
foreach ($jobs as $job)
{
if ($hit = $index->find('pk:'.$job->getId()))
{
$hit->delete();
}
}
$index->optimize();
$this->logSection('lucene', 'Cleaned up and optimized the job index');
// Remove stale jobs
$nb = Doctrine::getTable('JobeetJob')->cleanup($options['days']);
$this->logSection('doctrine', sprintf('Removed %d stale jobs', $nb));
}
}
|