Я создал команду, которая запускает загрузку файлов из Интернета, однако, поскольку эти файлы должны быть обработаны другим компонентом, нам нужно убедиться, что каждый файл, который был загружен и не был изменен за последние 10 секунд, правильное видео и не повреждено/частично загружено.
По этой причине нам нужно найти способ перехватить CTRL+C или завершение команды и очистить любой применимый файл, который не был успешно загружен.
Это то, что я пробовал до сих пор, используя symfony/console
и symfony/event-dispatcher
:
#!/usr/bin/env php
<?php
require_once(__DIR__ . '/../vendor/autoload.php');
use Symfony\Component\Console\Application;
use Symfony\Component\Console\ConsoleEvents;
use Symfony\Component\Console\Event\ConsoleTerminateEvent;
use Symfony\Component\EventDispatcher\EventDispatcher;
use ImportExport\Console\ImportCommand;
use Monolog\Logger;
$dotenv = new Dotenv\Dotenv(__DIR__ . '/../');
$dotenv->load();
$logger = new Logger('console');
$dispatcher = new EventDispatcher();
$dispatcher->addListener(ConsoleEvents::TERMINATE, function (ConsoleTerminateEvent $event) {
// gets the command that has been executed
$command = $event->getCommand();
var_dump($command);
});
$application = new Application("Import-Export System", 'v0.1.0-ALPHA');
$application->add(new ImportCommand($logger));
$application->setDispatcher($dispatcher);
$application->run();
Однако var_dump()
никогда не отображается в консоли, если я нажимаю CTRL+C.
Предложения?