Во-первых, чтобы запустить скрипт, вы можете использовать Process-компонент Symfony .
Вот пример использования:
$phpBinaryFinder = new PhpExecutableFinder();
$phpBinaryPath = $phpBinaryFinder->find();
$process = new Process("{$phpBinaryPath} worker.php");
$process->run();
Вы должны прочитатьсоответствующий документ для получения дополнительной информации.
Затем вы хотите подключиться после сброса доктрины, а затем использовать прослушиватель событий.Это класс с определенным методом, который вы регистрируете как сервис.
Вам необходимо определить класс:
namespace App\EventListener;
use Doctrine\ORM\Event\PostFlushEventArgs;
use Doctrine\ORM\Event\LifecycleEventArgs;
class YourListener
{
private $persisted = [];
public function postPersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if (!$entity instanceof YourRecord) {
return;
}
$this->persisted[] = $entity;
}
public function postFlush(PostFlushEventArgs $args)
{
foreach ($persisted as $row) {
// Execute your action for the given row
}
}
}
Затем вам нужно зарегистрировать его как сервис:
# services.yaml
services:
App\EventListener\YourListener:
tags:
- { name: doctrine.event_listener, event: postPersist }
- { name: doctrine.event_listener, event: postFlush }
Проверьте соответствующую документацию: https://symfony.com/doc/current/doctrine/event_listeners_subscribers.html