You need to enable JavaScript to run this app.
导航
PHP Driver
最近更新时间:2024.07.09 18:11:31首次发布时间:2024.07.09 18:11:31

本文介绍如何在 PHP 开发环境连接并访问 ByteHouse 云数仓。
ByteHouse 兼容下列开源 ClickHouse PHP Driver 程序:

  • HTTP 方式连接: smi2/phpClickHouse ( 本文已在驱动程序 1.5 版本,PHP 版本 8.3.4 下验证)

前提条件

访问 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

可参考下面代码样例连接到 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"
        ];
    }
}