PHPackages                             xingwenge/canal\_php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. xingwenge/canal\_php

ActiveLibrary[HTTP &amp; Networking](/categories/http)

xingwenge/canal\_php
====================

connect canal server via php client.

v1.0.3(6y ago)39694.3k↓28.8%66[20 issues](https://github.com/xingwenge/canal-php/issues)[1 PRs](https://github.com/xingwenge/canal-php/pulls)2MITPHPPHP &gt;=5.6

Since Jul 23Pushed 2y ago9 watchersCompare

[ Source](https://github.com/xingwenge/canal-php)[ Packagist](https://packagist.org/packages/xingwenge/canal_php)[ RSS](/packages/xingwenge-canal-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (2)Versions (5)Used By (2)

canal-php
=========

[](#canal-php)

一.canal-php 简介
--------------

[](#一canal-php-简介)

canal-php 是阿里巴巴开源项目 [Canal](https://github.com/alibaba/canal)是阿里巴巴mysql数据库binlog的增量订阅&amp;消费组件 的 php 客户端。为 php 开发者提供一个更友好的使用 Canal 的方式。Canal 是mysql数据库binlog的增量订阅&amp;消费组件。

基于日志增量订阅&amp;消费支持的业务：

1. 数据库镜像
2. 数据库实时备份
3. 多级索引 (卖家和买家各自分库索引)
4. search build
5. 业务cache刷新
6. 价格变化等重要业务消息

关于 Canal 的更多信息请访问

二.应用场景
------

[](#二应用场景)

canal-php 作为Canal的客户端，其应用场景就是Canal的应用场景。关于应用场景在Canal介绍一节已有概述。举一些实际的使用例子：

1.代替使用轮询数据库方式来监控数据库变更，有效改善轮询耗费数据库资源。

2.根据数据库的变更实时更新搜索引擎，比如电商场景下商品信息发生变更，实时同步到商品搜索引擎 Elasticsearch、solr等

3.根据数据库的变更实时更新缓存，比如电商场景下商品价格、库存发生变更实时同步到redis

4.数据库异地备份、数据同步

5.根据数据库变更触发某种业务，比如电商场景下，创建订单超过xx时间未支付被自动取消，我们获取到这条订单数据的状态变更即可向用户推送消息。

6.将数据库变更整理成自己的数据格式发送到kafka等消息队列，供消息队列的消费者进行消费。

三.工作原理
------

[](#三工作原理)

canal-php 是 Canal 的 php 客户端，它与 Canal 是采用的Socket来进行通信的，传输协议是TCP，交互协议采用的是 Google Protocol Buffer 3.0。

四.工作流程
------

[](#四工作流程)

1.Canal连接到mysql数据库，模拟slave

2.canal-php 与 Canal 建立连接

3.数据库发生变更写入到binlog

4.Canal向数据库发送dump请求，获取binlog并解析

5.canal-php 向 Canal 请求数据库变更

6.Canal 发送解析后的数据给canal-php

7.canal-php收到数据，消费成功，发送回执。（可选）

8.Canal记录消费位置。

[![架构图](assets/architecture.png)](assets/architecture.png)

五.快速启动
------

[](#五快速启动)

### 安装Canal

[](#安装canal)

Canal 的安装以及配置使用请查看

### 构建canal php客户端

[](#构建canal-php客户端)

```
$ composer require xingwenge/canal_php

or

$ git clone https://github.com/xingwenge/canal-php.git
$ cd canal-php
$ composer update
```

### 建立与Canal的连接

[](#建立与canal的连接)

```
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;
}
```

[![运行效果图](assets/effect.gif)](assets/effect.gif)

更多详情请查看 [Sample](https://github.com/xingwenge/canal-php/blob/master/src/sample/client.php)

### 性能

[](#性能)

本地开发环境

消费速度：sql insert 10000 事件，32秒消耗完成。消费速度 312.5 条/s。

内存使用：4 M。

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity52

Moderate usage in the ecosystem

Community20

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

4

Last Release

2485d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10755609?v=4)[xingwenge](/maintainers/xingwenge)[@xingwenge](https://github.com/xingwenge)

---

Top Contributors

[![xingwenge](https://avatars.githubusercontent.com/u/10755609?v=4)](https://github.com/xingwenge "xingwenge (31 commits)")

### Embed Badge

![Health badge](/badges/xingwenge-canal-php/health.svg)

```
[![Health](https://phpackages.com/badges/xingwenge-canal-php/health.svg)](https://phpackages.com/packages/xingwenge-canal-php)
```

###  Alternatives

[friendsofsymfony/rest-bundle

This Bundle provides various tools to rapidly develop RESTful API's with Symfony

2.8k73.3M319](/packages/friendsofsymfony-rest-bundle)[illuminate/http

The Illuminate Http package.

11936.0M5.1k](/packages/illuminate-http)[spiral/roadrunner-grpc

High-Performance GRPC server for PHP applications

672.6M11](/packages/spiral-roadrunner-grpc)[swoole/grpc

Grpc PHP Client base on Swoole Http2 Coroutine

19718.9k1](/packages/swoole-grpc)[roadrunner-php/centrifugo

RoadRunner: Centrifugo bridge

131.6M4](/packages/roadrunner-php-centrifugo)[swoole/etcd-client

Grpc PHP Client base on Swoole Http2 Coroutine

1973.2k1](/packages/swoole-etcd-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
