1. Go to this page and download the library: Download m6web/daemon-bundle 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/ */
m6web / daemon-bundle example snippets
namespace Path\From\Your\Project\Event;
use M6Web\Bundle\DaemonBundle\Event\AbstractDaemonEvent;
class EachFiveEvent extends AbstractDaemonEvent
{
}
namespace App\Command;
use M6Web\Bundle\DaemonBundle\Command\DaemonCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class DaemonizedCommand extends DaemonCommand
{
protected function configure()
{
$this
->setName('daemonized:command')
->setDescription('My daemonized command');
}
protected function setup(InputInterface $input, OutputInterface $output): void
{
// Set up your daemon here
// Add your own optional callback : called every 10 iterations
$this->addIterationsIntervalCallback(10, [$this, 'executeEveryTenLoops']);
// You can add your own Periodic Timer,
// Here this timer will be called every 0.5s
$daemon = $this;
$this->loop->addPeriodicTimer(0.5, function ($timer) use ($daemon) {
// It's the last loop, cancel the timer.
if ($daemon->isLastLoop()) {
$daemon->loop->cancelTimer($timer);
}
});
}
/**
* Execute is called at every loop
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln("Iteration");
// This method helps to give back the CPU to the react-loop.
// So you can wait between two iterations if your workers has nothing to do.
$this->setNextIterationSleepingTime(1000000); // Every second
}
/**
* executeEveryTenLoops is called every 10 loops
*/
protected function executeEveryTenLoops(InputInterface $input, OutputInterface $output): void
{
$output->writeln("Iteration " . $this->getLoopCount());
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.