Download the PHP package erikwang2013/clickhouse-php without Composer
On this page you can find all versions of the php package erikwang2013/clickhouse-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download erikwang2013/clickhouse-php
More information about erikwang2013/clickhouse-php
Files in erikwang2013/clickhouse-php
Package clickhouse-php
Short Description PHP ClickHouse client over HTTP with query builder, schema builder, migration system and ORM, plus Laravel, ThinkPHP, Webman, Hyperf, Yii2 and Yii3 adapters.
License MIT
Homepage https://package.erik.xyz/clickhouse/
Informations about the package clickhouse-php
clickhouse-php
官网 / Website: https://package.erik.xyz/clickhouse/
PHP ClickHouse 客户端。默认通过 ClickHouse HTTP 接口(8123 端口)通信,内置查询构建器、Schema Builder、迁移系统与 ORM,并适配 Laravel、ThinkPHP、Webman、Hyperf、Yii2、Yii3。
分层解耦:Manager → ClientInterface → PoolInterface → TransportInterface,客户端形态、连接池、传输协议各自面向接口,均可替换。Native TCP 协议已在传输层预留位置,尚未实现。
简体中文 | 日本語
项目结构
架构设计
自上而下分为六层,每层只依赖下一层的抽象接口:
| 层 | 职责 | 关键类型 |
|---|---|---|
| 入口层 | 门面与框架适配 | ClickHouse、六套框架适配器 |
| 构建层 | 拼装查询与 DDL,不产生 IO | Query\Builder、Schema\Builder、ORM\Model、Migration\Migrator |
| 客户端层 | 多连接管理与执行入口 | Manager、HttpClient、PooledClient |
| 连接池层 | 连接复用与并发上限 | PoolInterface、AbstractPool、NoPool |
| 传输层 | 协议编解码与错误映射 | HttpTransport、TcpTransport(规划中) |
| 支撑层 | 配置、转义、异常、日志 | Support\*、Exceptions\*、PSR-3 LoggerInterface |
功能设计
生命周期
安装
快速开始
独立使用(原生 PHP)
不依赖任何框架。用 CLICKHOUSE_* 环境变量初始化,一行即可:
环境变量覆盖不到的配置(多连接、连接池调参)用 Manager 显式传入:
插入数据
建表 (Schema Builder)
数据迁移
创建迁移文件(如 2026_05_27_000000_create_logs_table.php):
运行迁移:
ORM
多连接
框架集成
Laravel
配置文件自动发布,Composer 自动发现 ServiceProvider。
Artisan 命令:
ThinkPHP
在 app/service.php 中注册服务:
Webman
Webman 自动加载插件配置,无需手动配置。
Hyperf
通过 ConfigProvider 自动发现,支持依赖注入和协程连接池。
Yii2
加一行 bootstrap 就零配置接入(走 CLICKHOUSE_* 环境变量),web 与 console 都生效:
也可以照常注册成应用组件,自己给连接参数:
两种入口共用同一个 Manager;config 留空则读 CLICKHOUSE_* 环境变量。
Yii3
包自带 config/params.php 与 config/di.php,装了 yiisoft/config 就自动合并,不用注册。
需要多连接、连接池或底层客户端时,注入 Erikwang2013\ClickHouse\Client\Manager(同样已注册)。
查询构建器参考
| 方法 | 说明 |
|---|---|
table($name) / from($name) |
指定表名 |
select([...]) / selectRaw($expr) |
SELECT 列。select() 的列名会被反引号引用(`order` 这类保留字可用),别名 id as uid 两侧分别引用;要写函数或子查询请用 selectRaw() 或 Expression |
where($col, $op, $val) |
条件 (2 参数时 $op 默认 =)。值为 null 时自动转 IS NULL / IS NOT NULL |
orWhere($col, $op, $val) |
OR 条件 |
whereIn($col, $arr) / whereNotIn($col, $arr) |
IN / NOT IN |
whereBetween($col, [$min, $max]) |
BETWEEN |
whereNull($col) / whereNotNull($col) |
IS NULL / IS NOT NULL |
whereRaw($sql) |
原生 WHERE(勿传用户输入) |
prewhere($col, $op, $val) |
PREWHERE,位置在 WHERE 之前(ClickHouse 最有效的扫描裁剪) |
orderBy($col, $dir) |
排序 (默认 ASC) |
groupBy(...$cols) |
分组 |
having($col, $op, $val) / havingRaw($sql) |
HAVING,位置在 GROUP BY 之后。having() 会把列名当标识符引用,聚合条件(如 count() > 100)请用 havingRaw() 或 new Expression('count()') |
limit($n) / offset($n) |
分页 |
final() |
读取时去重合并(ReplacingMergeTree 等) |
sample($ratio) |
SAMPLE 抽样,如 sample(0.1) |
settings([...]) |
查询级 SETTINGS,如 settings(['max_execution_time' => 30]) |
count() / sum($col) / avg($col) / min($col) / max($col) |
聚合 |
insert($data) |
插入 (单行或批量)。同一批各行必须列一致,缺列或多列会直接报错(避免值按位置错位写入) |
delete() |
删除(编译为 ALTER TABLE ... DELETE,必须带 WHERE,否则抛异常) |
get() |
执行查询,返回 Result |
first() |
返回第一条 |
toSql() |
获取生成的 SQL |
大结果集与流式读取
get() 会把整个结果集解析成 PHP 数组,内存约是响应体积的 7 倍(实测 5 列窄表:载荷 93 B/行 → 解码后 677 B/行,10 万行约 73 MB)。数据量大时用 stream() 逐行消费,内存与结果集大小无关:
池化模式下 stream() 同样可用:连接在生成器消费完(或提前 break 被销毁)时归还。
原生 SQL 入口
以下入口是原样拼接的原生 SQL 通道,传入用户输入等于交出数据库:selectRaw()、whereRaw()、havingRaw()、new Expression($sql)、Blueprint::settings() 的值、以及 $table->string('col') 这类列类型字符串(array($name, $type))。标识符与值本身已做转义(列名反引号、值按类型转义),但原生 SQL 片段不做任何处理。
Expression 可以传进 select()(放进数组里)、where()、prewhere()、having()、orderBy()、groupBy(),用于 rand()、toStartOfHour(ts) 这类表达式。
Schema 列类型
| 方法 | ClickHouse 类型 |
|---|---|
string($name) |
String |
fixedString($name, $len) |
FixedString(N) |
int8/16/32/64($name) |
Int8/16/32/64 |
uint8/16/32/64($name) |
UInt8/16/32/64 |
float32($name) / float64($name) |
Float32 / Float64 |
decimal($name, $p, $s) |
Decimal(P, S) |
date($name) |
Date |
dateTime($name) |
DateTime |
dateTime64($name, $p) |
DateTime64(P) |
uuid($name) |
UUID |
bool($name) |
Bool |
array($name, $type) |
Array(T) |
nullable($name, $type) |
Nullable(T) |
lowCardinality($name, $type) |
LowCardinality(T) |
配置参考
关于连接池:pool 配置只在存在可用协程通道时生效(Swoole / Swow / Workerman),FPM 等同步环境下会忽略它并直连,不会给你加并发上限。另外 HTTP 驱动走同步 Guzzle,池化的实际收益是「限制并发连接数 + 复用连接对象」,不会自动变成非阻塞 —— 要真正非阻塞需自行开启 Swoole 的 curl 钩子(Swoole\Runtime::enableCoroutine(SWOOLE_HOOK_NATIVE_CURL),它不在 SWOOLE_HOOK_ALL 里)或接入 hyperf/guzzle 的 CoroutineHandler。可用 pool.driver 显式指定 swoole|swow|workerman|none。
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
CLICKHOUSE_CONNECTION |
default | 默认连接名 |
CLICKHOUSE_HOST |
localhost | 主机地址 |
CLICKHOUSE_PORT |
8123 | HTTP 端口 |
CLICKHOUSE_DB |
default | 数据库名 |
CLICKHOUSE_USER |
default | 用户名 |
CLICKHOUSE_PASS |
— | 密码 |
CLICKHOUSE_TIMEOUT |
30 | 连接超时(秒) |
CLICKHOUSE_HTTPS |
false | 是否走 HTTPS |
CLICKHOUSE_DRIVER |
http | 驱动类型 |
CLICKHOUSE_POOL_MIN |
2 | 最小连接数 |
CLICKHOUSE_POOL_MAX |
16 | 最大连接数 |
CLICKHOUSE_POOL_TIMEOUT |
5.0 | 取连接超时(秒) |
以上变量在原生 PHP 下由 ClickHouse::bootstrap() / Manager::fromEnv() 读取,六个框架的配置文件读的是同一套变量名(含 CLICKHOUSE_HTTPS)。
异常处理
欢迎支持
| 微信 | 支付宝 |
|---|---|
感谢您的支持!
许可证
MIT License. Copyright (c) 2026 erik https://erik.xyz
项目宠物表情形态 · ClickHouse 仓鼠
| 笑 | 欢乐 | 哭 | 沮丧 | 惊恐 | 愤怒 |
|---|---|---|---|---|---|
:emoji-smile: |
:emoji-joy: |
:emoji-cry: |
:emoji-depressed: |
:emoji-terrified: |
:emoji-angry: |
| 撒娇 | 卖萌 | 讨好 | 敲打 | 捂脸 | 吐舌头 |
|---|---|---|---|---|---|
:emoji-coquettish: |
:emoji-cute: |
:emoji-pleasing: |
:emoji-knocking: |
:emoji-facepalm: |
:emoji-tongue: |
12 种彩色动态形态:笑 / 欢乐 / 哭 / 沮丧 / 惊恐 / 愤怒 / 撒娇 / 卖萌 / 讨好 / 敲打 / 捂脸 / 吐舌头。每个 SVG 自带表情、情绪特效与整体动效,并遵循
prefers-reduced-motion。
代码中调用
视觉资产授权 / Visual Assets License
本项目的项目宠物、图片、图标、表情(包括 docs/pet-expressions/ 等目录下的
SVG / PNG)不是开源资产,版权归作者所有。未经书面许可不得复制、修改、再分发或
用于商业用途;商业使用需取得商业授权,联系 [email protected]。详见
ASSETS-LICENSE.md。
代码部分仍遵循仓库原有
LICENSE;第三方素材(如明确标注的 Go Gopher 等)仍遵循其原许可证。
All versions of clickhouse-php with dependencies
ext-mbstring Version *
guzzlehttp/guzzle Version ^7.0 || ^8.0
psr/log Version ^3.0