维护清理
Note
此页面的内容需要进行重大更新。旧页面包含过时且可能不准确的信息。您仍然可以在 Mautic Developer Documentation archived repository 中访问它。
如果您有兴趣帮助开发此页面和其他新内容的,请考虑加入文档编写工作。
请阅读 Contributing Guidelines 和 Contributing to Mautic’s documentation 以开始您的贡献。
要连接到 mautic:maintenance:cleanup 命令,请为 \Mautic\CoreBundle\CoreEvents::MAINTENANCE_CLEANUP_DATA 事件创建一个监听器。
使用 $event->setStat($key, $affectedRows, $sql, $sqlParameters) 向 CLI 命令提供反馈。
请注意,$sql 和 $sqlParameters 仅用于调试,并且仅在 dev 环境中显示。
Warning
请勿在 dry run 事件期间删除记录。您可以使用 $event->isDryRun() 来验证是否为这种情况。有关更多详细信息,请参阅下面的代码示例。
<?php
// plugins\HelloWorldBundle\EventListener\MaintenanceSubscriber.php
declare(strict_types=1);
namespace MauticPlugin\HelloWorldBundle\EventListener;
use Doctrine\DBAL\Connection;
use Mautic\CoreBundle\CoreEvents;
use Mautic\CoreBundle\Event\MaintenanceEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class MaintenanceSubscriber implements EventSubscriberInterface
{
protected Connection $db;
protected TranslatorInterface $translator;
public function __construct(Connection $db, TranslatorInterface $translator)
{
$this->db = $db;
$this->translator = $translator;
}
public static function getSubscribedEvents()
{
return [
CoreEvents::MAINTENANCE_CLEANUP_DATA => ['onDataCleanup', -50]
];
}
public function onDataCleanup(MaintenanceEvent $event)
{
$qb = $this->db->createQueryBuilder()
->setParameter('date', $event->getDate()->format('Y-m-d H:i:s'));
if ($event->isDryRun()) {
$rows = (int) $qb->select('count(*) as records')
->from(MAUTIC_TABLE_PREFIX . 'worlds', 'w')
->where(
$qb->expr()->gte('w.date_added', ':date')
)
->execute()
->fetchColumn();
} else {
$rows = (int) $qb->delete(MAUTIC_TABLE_PREFIX . 'worlds')
->where(
$qb->expr()->lte('date_added', ':date')
)
->execute();
}
- $event->setStat($this->translator->trans(‘mautic.maintenance.hello_world’), $rows, $qb->getSQL(), $qb->getParameters());
}
}