东叔儿 發表於 2020-5-4 19:48:00

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>  &nbsp; &nbsp;插件地址:https://github.com/smi2/phpClickHouse/tree/e27b04d482e9922df8bf1ea0880bf2985d2e06d0</span></div>
<div><span style="font-size: 16px">  <br></span></div>
<div>&nbsp;</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>&nbsp;</div>
<div>&nbsp;</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> &lt;?<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' =&gt; '10.222.1.213',
<span style="color: rgba(0, 128, 128, 1)">6</span>   'port' =&gt; '8123',
<span style="color: rgba(0, 128, 128, 1)">7</span>   'username' =&gt; 'sangfor',
<span style="color: rgba(0, 128, 128, 1)">8</span>   'password' =&gt; '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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;<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>)&lt;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>)&gt;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'=&gt;"2020-05-03 00:00:00|2020-07-07 00:00:00",
<span style="color: rgba(0, 128, 128, 1)"> 42</span>   'src_ip'=&gt;"192.168.0.1",
<span style="color: rgba(0, 128, 128, 1)"> 43</span>   'src_port'=&gt;8080,
<span style="color: rgba(0, 128, 128, 1)"> 44</span>   'dst_ip'=&gt;'',
<span style="color: rgba(0, 128, 128, 1)"> 45</span>   'dst_port'=&gt;<span style="color: rgba(0, 0, 255, 1)">null</span>,
<span style="color: rgba(0, 128, 128, 1)"> 46</span>   'page'=&gt;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 &gt; '{<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 &lt; '{<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>=&gt;<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>-&gt;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>-&gt;<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> ?&gt;</pre>
</div>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    人生还有意义。那一定是还在找存在的理由<br><br>
来源:https://www.cnblogs.com/shiqi17/p/12827926.html
頁: [1]
查看完整版本: php 链接 clickhouse