Path: blob/master/src/applications/daemon/garbagecollector/PhabricatorDaemonTaskGarbageCollector.php
12256 views
<?php12final class PhabricatorDaemonTaskGarbageCollector3extends PhabricatorGarbageCollector {45const COLLECTORCONST = 'worker.tasks';67public function getCollectorName() {8return pht('Archived Tasks');9}1011public function getDefaultRetentionPolicy() {12return phutil_units('14 days in seconds');13}1415protected function collectGarbage() {16$table = new PhabricatorWorkerArchiveTask();17$data_table = new PhabricatorWorkerTaskData();18$conn_w = $table->establishConnection('w');1920$tasks = id(new PhabricatorWorkerArchiveTaskQuery())21->withDateCreatedBefore($this->getGarbageEpoch())22->setLimit(100)23->execute();24if (!$tasks) {25return false;26}2728$data_ids = array_filter(mpull($tasks, 'getDataID'));29$task_ids = mpull($tasks, 'getID');3031$table->openTransaction();32if ($data_ids) {33queryfx(34$conn_w,35'DELETE FROM %T WHERE id IN (%Ld)',36$data_table->getTableName(),37$data_ids);38}39queryfx(40$conn_w,41'DELETE FROM %T WHERE id IN (%Ld)',42$table->getTableName(),43$task_ids);44$table->saveTransaction();4546return (count($task_ids) == 100);47}4849}505152