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.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

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

PHP Build Version
Package Version
Requires php Version >=8.0
ext-mbstring Version *
guzzlehttp/guzzle Version ^7.0 || ^8.0
psr/log Version ^3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package erikwang2013/clickhouse-php contains the following files

Loading the files please wait ...