1. Go to this page and download the library: Download caseyamcl/tasktracker library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
caseyamcl / tasktracker example snippets
use TaskTracker\Tracker,
TaskTracker\Tick;
use TaskTracker\Subscriber\SymfonyConsoleProgress,
TaskTracker\Subscriber\Psr3Logger;
use Symfony\Console\Output\ConsoleOutput;
use Monolog\Logger as MonologLogger;
// Setup subscribers
$subscribers = [
new SymfonyConsoleProgress(new ConsoleOutput()),
new Psr3Logger(new MonologLogger())
];
// Setup a tracker for a job with 100 items
$tracker = Tracker::build(100, $subscribers);
$tracker->start("Let's go");
for ($i = 0; $i < 100; $i++) {
// Do some work of some sort...
$tracker->tick();
}
$tracker->finish("All done");
use TaskTracker\Tracker;
use TaskTracker\Tick;
use TaskTracker\Subscriber\SymfonyConsoleProgress;
use Symfony\Component\Console\Command\Command;
/**
* My Symfony Command
*/
class MyCommand extends Command
{
protected function configure()
{
$this->setName('example');
$this->setDescription("Demonstrate TaskTracker");
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$numItems = 10;
// Build Task Tracker with Symfony Console Progress Bar subscriber
$tracker = Tracker::build([new SymfonyConsoleProgress($output)], $numItems);
// Add a Monolog Listener after Tracker construction
$monolog = new \Monolog\Logger(/* some handlers */);
$tracker->addSubscriber(new Psr3Logger($monolog));
// You can also add Event Listeners directly
$tracker->getDispatcher()->addListener(\Tracker\Events::TRACKER_TICK, function(\Tracker\Tick $tick) {
// do something...
});
// Tracker::start() is technically optional; if not called, it will automatically
// be called upon the first Tick
$tracker->start("Let's go!");
// The SymfonyConsoleProgress listener will output a progress bar while the logger will log events
for ($i = 0; $i < 10; $i++) {
$tracker->tick(\Tick::SUCCESS, "On item: " . $i);
sleep(1);
}
// Tracker::start(), Tracker::tick(), Tracker::abort(), and Tracker::finish() all return
// a \Tracker\Report object.
$report = $tracker->finish('All done!');
$output->writeln(sprintf("All Done! <info>%s</info> items processed", $report->getNumTotalItems()));
}
}
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use TaskTracker\Tick;
/**
* Listen for Tracker Events
*/
class MyEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
TaskTracker\Events::TRACKER_START => 'handle',
TaskTracker\Events::TRACKER_TICK => 'handle',
TaskTracker\Events::TRACKER_FINISH => 'handle',
];
}
public static function handle(Tick $tickEvent)
{
// See all of the information about the progress of that tick
var_dump($tickEvent->getReport()->toArray());
}
}