本文介绍如何在 PHP 开发环境连接并访问 ByteHouse 云数仓。
ByteHouse 兼容下列开源 ClickHouse PHP Driver 程序:
访问 ByteHouse 所需的连接信息,请参考 获取集群连接信息 获取。
本章节介绍通过 smi2/phpClickHouse 程序连接 ByteHouse 的基本用法,您可以在程序 Github 主页 或者 Packagist 获取最新的文档和发布版本信息。
说明
smi2/phpClickHouse 程序 1.5 及以上版本,需要 php 7.3 及以上版本的支持。
composer require smi2/phpclickhouse // 安装 hyperf 3.1 框架 // https://hyperf.wiki/3.1/#/zh-cn/quick-start/install composer create-project hyperf/hyperf-skeleton
可参考下面代码样例连接到 ByteHouse ,注意根据前提条件中获取的信息填写$config
字段。
<?php declare(strict_types=1); /** * This file is part of Hyperf. * * @link https://www.hyperf.io * @document https://hyperf.wiki * @contact group@hyperf.io * @license https://github.com/hyperf/hyperf/blob/master/LICENSE */ namespace App\Controller; use ClickHouseDB\Client; class IndexController extends AbstractController { public function queryBH() { $user = $this->request->input('user', 'Hyperf'); // 填写用户名 $password = $this->request->input('password', ''); // 填写密码 $host = $this->request->input('host', ''); // 填写 Host $query = $this->request->input('query', 'select * from system.clusters'); // sql语句 $config = [ 'host' => "$host", 'port' => '8123', 'username' => "{$user}", 'password' => "$password", 'https' => false ]; $db = new Client($config); $db->database('default'); $db->setTimeout(10); // 10 seconds $db->setConnectTimeOut(5); // 5 seconds $statement = $db->select($query); $json = json_encode($statement->rows()); //返回查询数组 return [ 'query' => "{$query}", 'result' => "$json" ]; } }