php 链接 clickhouse
<div><strong><span style="font-size: 18pt">一、通过pypclickhouse插件连接ck数据库</span></strong></div><div><span style="font-size: 16px"><strong> </strong>博主用的1.1.2因为我们公司使用的php5点几版本,这是最高支持<br> 插件地址:https://github.com/smi2/phpClickHouse/tree/e27b04d482e9922df8bf1ea0880bf2985d2e06d0</span></div>
<div><span style="font-size: 16px"> <br></span></div>
<div> </div>
<div><span style="font-size: 16px">使用默认配置去连接 clickhouse<br>错误:Fatal error: Call to undefined function curl_init()<br>解决:在php.ini 文件中 将 extension=php_curl.dll 前的分号去掉<br>错误:Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl.dll<br>因为刚才php.ini文件引入的 php_curl.dll 文件系统默认在 ‘C:/php/ext/’下去找<br>两种解决方式,把该文件拷贝过去,或者php.ini中配置查找路径:<br>; extension_dir = "./"<br>; On windows:<br>extension_dir = "ext" #将此行前面分号去掉</span></div>
<div> </div>
<div> </div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <?<span style="color: rgba(0, 0, 0, 1)">php
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 255, 1)">include_once</span> __DIR__ . '/third_party/phpclickhouse1.1.2/include.php'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(128, 0, 128, 1)">$config</span> =<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 128, 128, 1)">5</span> 'host' => '10.222.1.213',
<span style="color: rgba(0, 128, 128, 1)">6</span> 'port' => '8123',
<span style="color: rgba(0, 128, 128, 1)">7</span> 'username' => 'sangfor',
<span style="color: rgba(0, 128, 128, 1)">8</span> 'password' => 'sangfor123'
<span style="color: rgba(0, 128, 128, 1)">9</span> <span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span> <span style="color: rgba(128, 0, 128, 1)">$tb_name</span> = 'netflow'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span>
<span style="color: rgba(0, 128, 128, 1)"> 12</span>
<span style="color: rgba(0, 128, 128, 1)"> 13</span> <span style="color: rgba(128, 0, 128, 1)">$db_conn</span> = <span style="color: rgba(0, 0, 255, 1)">new</span> ClickHouseDB\Client(<span style="color: rgba(128, 0, 128, 1)">$config</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span> <span style="color: rgba(128, 0, 128, 1)">$db_conn</span>->database('test'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span> <span style="color: rgba(128, 0, 128, 1)">$db_conn</span>->setTimeout(1.5); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 1500 ms</span>
<span style="color: rgba(0, 128, 128, 1)"> 16</span> <span style="color: rgba(128, 0, 128, 1)">$db_conn</span>->setTimeout(10); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 10 seconds</span>
<span style="color: rgba(0, 128, 128, 1)"> 17</span> <span style="color: rgba(128, 0, 128, 1)">$db_conn</span>->setConnectTimeOut(5); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 5 seconds</span>
<span style="color: rgba(0, 128, 128, 1)"> 18</span>
<span style="color: rgba(0, 128, 128, 1)"> 19</span> <span style="color: rgba(128, 0, 128, 1)">$db_conn</span>-><span style="color: rgba(0, 0, 0, 1)">ping();
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span>
<span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(0, 0, 255, 1)">function</span> zifll(<span style="color: rgba(128, 0, 128, 1)">$param</span>,<span style="color: rgba(128, 0, 128, 1)">$char</span>='0'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(!<span style="color: rgba(0, 128, 128, 1)">is_string</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span> <span style="color: rgba(128, 0, 128, 1)">$param</span> = (<span style="color: rgba(0, 0, 255, 1)">string</span>)<span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 128, 128, 1)">strlen</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>)<2<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(128, 0, 128, 1)">$param</span> = "0".<span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span> <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 128, 128, 1)">strlen</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>)>2<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(128, 0, 128, 1)">$param</span> = <span style="color: rgba(0, 128, 128, 1)">substr</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>,<span style="color: rgba(0, 128, 128, 1)">strlen</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>)-2<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span> <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span>
<span style="color: rgba(0, 128, 128, 1)"> 38</span> <span style="color: rgba(128, 0, 128, 1)">$sql</span> = "update {<span style="color: rgba(128, 0, 128, 1)">$tb_name</span>} set record_time="<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span>
<span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(128, 0, 128, 1)">$param</span> = <span style="color: rgba(0, 0, 255, 1)">array</span><span style="color: rgba(0, 0, 0, 1)">(
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> 'time_range'=>"2020-05-03 00:00:00|2020-07-07 00:00:00",
<span style="color: rgba(0, 128, 128, 1)"> 42</span> 'src_ip'=>"192.168.0.1",
<span style="color: rgba(0, 128, 128, 1)"> 43</span> 'src_port'=>8080,
<span style="color: rgba(0, 128, 128, 1)"> 44</span> 'dst_ip'=>'',
<span style="color: rgba(0, 128, 128, 1)"> 45</span> 'dst_port'=><span style="color: rgba(0, 0, 255, 1)">null</span>,
<span style="color: rgba(0, 128, 128, 1)"> 46</span> 'page'=>0
<span style="color: rgba(0, 128, 128, 1)"> 47</span> <span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span>
<span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(0, 0, 255, 1)">function</span> get_query_sql(<span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> = "select * from test.netflow "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>)||!<span style="color: rgba(0, 128, 128, 1)">is_array</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span> <span style="color: rgba(0, 0, 255, 1)">echo</span> "No paramter!"<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 255, 1)">exit</span><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span> <span style="color: rgba(128, 0, 128, 1)">$time_rage</span> = <span style="color: rgba(0, 128, 128, 1)">explode</span>("|",<span style="color: rgba(128, 0, 128, 1)">$param</span>["time_range"<span style="color: rgba(0, 0, 0, 1)">]);
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(128, 0, 128, 1)">$time_rage</span>)
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "where "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "record_time > '{<span style="color: rgba(128, 0, 128, 1)">$time_rage</span>}' "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(128, 0, 128, 1)">$time_rage</span>)
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "and "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "record_time < '{<span style="color: rgba(128, 0, 128, 1)">$time_rage</span>}' "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> array_splice($param,"time_range");</span>
<span style="color: rgba(0, 128, 128, 1)"> 69</span> <span style="color: rgba(0, 0, 255, 1)">unset</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>["time_range"<span style="color: rgba(0, 0, 0, 1)">]);
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span> <span style="color: rgba(0, 0, 255, 1)">foreach</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span> <span style="color: rgba(0, 0, 255, 1)">as</span> <span style="color: rgba(128, 0, 128, 1)">$key</span>=><span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">isset</span>(<span style="color: rgba(128, 0, 128, 1)">$param</span>[<span style="color: rgba(128, 0, 128, 1)">$key</span><span style="color: rgba(0, 0, 0, 1)">]))
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$key</span>=="page"<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span> <span style="color: rgba(128, 0, 128, 1)">$offset</span> = <span style="color: rgba(128, 0, 128, 1)">$value</span>==0?"0":(<span style="color: rgba(0, 0, 255, 1)">string</span>)<span style="color: rgba(128, 0, 128, 1)">$value</span>*20<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "limit 20 offset {<span style="color: rgba(128, 0, 128, 1)">$offset</span>}"<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span> <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "and "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 128, 128, 1)">is_string</span>(<span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "{<span style="color: rgba(128, 0, 128, 1)">$key</span>} = '{<span style="color: rgba(128, 0, 128, 1)">$value</span>}' "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span> <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 86</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= "{<span style="color: rgba(128, 0, 128, 1)">$key</span>} = {<span style="color: rgba(128, 0, 128, 1)">$value</span>} "<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span>
<span style="color: rgba(0, 128, 128, 1)"> 91</span>
<span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> $query_sql = $query_sql.trim();</span>
<span style="color: rgba(0, 128, 128, 1)"> 95</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> = <span style="color: rgba(0, 128, 128, 1)">trim</span>(<span style="color: rgba(128, 0, 128, 1)">$query_sql</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span> .= ";"<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span> <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$query_sql</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>
<span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(128, 0, 128, 1)">$result</span> = <span style="color: rgba(128, 0, 128, 1)">$db_conn</span>->select(get_query_sql(<span style="color: rgba(128, 0, 128, 1)">$param</span><span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(128, 0, 128, 1)">$cur_info_all</span> = <span style="color: rgba(128, 0, 128, 1)">$result</span>-><span style="color: rgba(0, 0, 0, 1)">rawData();
</span><span style="color: rgba(0, 128, 128, 1)">102</span> <span style="color: rgba(128, 0, 128, 1)">$cur_data</span> = <span style="color: rgba(128, 0, 128, 1)">$cur_info_all</span>["data"<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 255, 1)">echo</span>(json_encode(<span style="color: rgba(128, 0, 128, 1)">$cur_data</span><span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 128, 1)">104</span> ?></pre>
</div>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
人生还有意义。那一定是还在找存在的理由<br><br>
来源:https://www.cnblogs.com/shiqi17/p/12827926.html
頁:
[1]