| 
<?php
 declare(strict_types=1);
 
 error_reporting(E_ALL);
 date_default_timezone_set('UTC');
 include __DIR__ . '/../vendor/autoload.php';
 
 use Monolog\Handler\StreamHandler;
 use Monolog\Logger;
 use MySQLReplication\Config\ConfigBuilder;
 use MySQLReplication\Definitions\ConstEventType;
 use MySQLReplication\Event\DTO\EventDTO;
 use MySQLReplication\Event\EventSubscribers;
 use MySQLReplication\MySQLReplicationFactory;
 
 /**
 * Your db configuration
 * @see ConfigBuilder
 * @link https://github.com/krowinski/php-mysql-replication/blob/master/README.md
 */
 $binLogStream = new MySQLReplicationFactory(
 (new ConfigBuilder())
 ->withUser('root')
 ->withHost('0.0.0.0')
 ->withPassword('root')
 ->withPort(3306)
 ->withHeartbeatPeriod(60)
 ->withEventsIgnore([ConstEventType::HEARTBEAT_LOG_EVENT->value])
 ->build(),
 logger: new Logger('replicator', [new StreamHandler(STDOUT)])
 );
 
 /**
 * Register your events handler
 * @see EventSubscribers
 */
 $binLogStream->registerSubscriber(
 new class() extends EventSubscribers {
 public function allEvents(EventDTO $event): void
 {
 // all events got __toString() implementation
 #echo $event;
 
 // all events got JsonSerializable implementation
 echo json_encode($event, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT);
 
 echo 'Memory usage ' . round(memory_get_usage() / 1048576, 2) . ' MB' . PHP_EOL;
 }
 }
 );
 
 // start consuming events
 $binLogStream->run();
 
 |