我已经构建了一个命令来触发通过 Internet 下载文件,但是由于这些文件需要由另一个组件处理,我们需要确保每个已下载且在过去 10 秒内未修改的文件是正确的视频并且没有损坏/部分下载。
出于这个原因,我们需要找到一种方法来捕获 CTRL+C 或命令终止并清理任何尚未成功下载的适用文件。
到目前为止,这是我尝试使用symfony/console
and的方法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,则永远不会在控制台中显示。
建议?