canal-php 是阿里巴巴开源项目。
Canal 是阿里巴巴 mysql 数据库 binlog 的增量订阅&消费组件 的 php 客户端。为 php 开发者提供一个更友好的使用 Canal 的方式。Canal 是 mysql 数据库 binlog 的增量订阅 & 消费组件。
基于日志增量订阅 & 消费支持的业务:
关于 Canal 的更多信息请访问 https://github.com/alibaba/canal/wiki
canal-php 作为 Canal 的客户端,其应用场景就是 Canal 的应用场景。关于应用场景在 Canal 介绍一节已有概述。举一些实际的使用例子:
canal-php 是 Canal 的 php 客户端,它与 Canal 是采用的 Socket 来进行通信的,传输协议是 TCP,交互协议采用的是 Google Protocol Buffer 3.0。

Canal 的安装以及配置使用请查看 https://github.com/alibaba/canal/wiki/QuickStart
$ composer require xingwenge/canal_php
or
$ git clone https://github.com/xingwenge/canal-php.git
$ cd canal-php
$ composer update
try {
$client = CanalConnectorFactory::createClient(CanalClient::TYPE_SOCKET_CLUE);
# $client = CanalConnectorFactory::createClient(CanalClient::TYPE_SWOOLE);
$client->connect("127.0.0.1", 11111);
$client->checkValid();
$client->subscribe("1001", "example", ".*\\..*");
# $client->subscribe("1001", "example", "db_name.tb_name"); # 设置过滤
while (true) {
$message = $client->get(100);
if ($entries = $message->getEntries()) {
foreach ($entries as $entry) {
Fmt::println($entry);
}
}
sleep(1);
}
$client->disConnect();
} catch (\Exception $e) {
echo $e->getMessage(), PHP_EOL;
}

更多详情请查看 Sample
本地开发环境
消费速度:sql insert 10000 事件,32 秒消耗完成。消费速度 312.5 条/s。
内存使用:4M。
项目地址:https://github.com/xingwenge/canal-phpcanal-php 基于 canal 的 mysql 数据库 binlog 的增量订阅 & 消费组件 php 客户端

