<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # workerman - 使用Mysql ``` <pre class="calibre14">``` $db <span class="token">=</span> <span class="token5">new</span> <span class="token1"><span class="token2">\</span>Workerman<span class="token2">\</span>MySQL<span class="token2">\</span>Connection</span><span class="token2">(</span><span class="token4">'host'</span><span class="token2">,</span> <span class="token4">'port'</span><span class="token2">,</span> <span class="token4">'user'</span><span class="token2">,</span> <span class="token4">'password'</span><span class="token2">,</span> <span class="token4">'db_name'</span><span class="token2">)</span><span class="token2">;</span> $db<span class="token">-</span><span class="token">></span><span class="token1">query</span><span class="token2">(</span><span class="token4">"SELECT ID,Sex FROM `Persons` WHERE sex='M' AND ID = 1"</span><span class="token2">)</span><span class="token2">;</span> $db<span class="token">-</span><span class="token">></span><span class="token1">row</span><span class="token2">(</span><span class="token4">"SELECT ID,Sex FROM `Persons` WHERE sex='M'"</span><span class="token2">)</span><span class="token2">;</span> 一行數據 $db<span class="token">-</span><span class="token">></span><span class="token1">column</span><span class="token2">(</span><span class="token4">"SELECT `ID` FROM `Persons` WHERE sex='M'"</span><span class="token2">)</span><span class="token2">;</span> 一列數據 $db<span class="token">-</span><span class="token">></span><span class="token1">single</span><span class="token2">(</span><span class="token4">"SELECT ID FROM `Persons` WHERE sex='M'"</span><span class="token2">)</span><span class="token2">;</span> 單個值 $db<span class="token">-</span><span class="token">></span><span class="token1">beginTrans</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span>事務開始 $db<span class="token">-</span><span class="token">></span><span class="token1">commitTrans</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> <span class="token6">// or $db->rollBackTrans(); 回滾或提交</span> 其余操作用使用 query即可 use \Workerman\Worker<span class="token2">;</span> <span class="token6">//use \Workerman\Lib\Timer;</span> require_once __DIR__ <span class="token2">.</span> <span class="token4">'/Workerman/Autoloader.php'</span><span class="token2">;</span> require_once __DIR__ <span class="token2">.</span> <span class="token4">'/Workerman/Mysql.php'</span><span class="token2">;</span> $worker <span class="token">=</span> <span class="token5">new</span> <span class="token1">Worker</span><span class="token2">(</span><span class="token4">"http://0.0.0.0:2345"</span><span class="token2">)</span><span class="token2">;</span> <span class="token6">// 開啟多少個進程運行定時任務,注意業務是否在多進程有并發問題</span> $worker<span class="token">-</span><span class="token">></span>count <span class="token">=</span> <span class="token3">1</span><span class="token2">;</span> $worker<span class="token">-</span><span class="token">></span>onWorkerStart <span class="token">=</span> <span class="token5">function</span><span class="token2">(</span>$worker<span class="token2">)</span> <span class="token2">{</span> global $db<span class="token2">;</span> $db <span class="token">=</span> <span class="token5">new</span> <span class="token1"><span class="token2">\</span>Workerman<span class="token2">\</span>MySQL<span class="token2">\</span>Connection</span><span class="token2">(</span><span class="token4">'127.0.0.1'</span><span class="token2">,</span> <span class="token4">'3306'</span><span class="token2">,</span> <span class="token4">'root'</span><span class="token2">,</span> <span class="token4">'mysql'</span><span class="token2">,</span> <span class="token4">'laravel'</span><span class="token2">)</span><span class="token2">;</span> <span class="token2">}</span><span class="token2">;</span> $worker<span class="token">-</span><span class="token">></span>onMessage <span class="token">=</span> <span class="token5">function</span><span class="token2">(</span>$connection<span class="token2">,</span> $data<span class="token2">)</span> <span class="token2">{</span> <span class="token6">// 通過全局變量獲得db實例</span> global $db<span class="token2">;</span> <span class="token6">// 執行SQL</span> $all_tables <span class="token">=</span> $db<span class="token">-</span><span class="token">></span><span class="token1">query</span><span class="token2">(</span><span class="token4">'select * from users'</span><span class="token2">)</span><span class="token2">;</span> $connection<span class="token">-</span><span class="token">></span><span class="token1">send</span><span class="token2">(</span><span class="token1">dump</span><span class="token2">(</span>$all_tables<span class="token2">)</span><span class="token2">)</span><span class="token2">;</span> <span class="token2">}</span><span class="token2">;</span> <span class="token6">// 運行worker</span> Worker<span class="token2">:</span><span class="token2">:</span><span class="token1">runAll</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> ``` ``` - 定時器加心跳 ``` <pre class="calibre14">``` require_once __DIR__ <span class="token2">.</span> <span class="token4">'/Workerman/Autoloader.php'</span><span class="token2">;</span> use Workerman\Worker<span class="token2">;</span> use Workerman\Lib\Timer<span class="token2">;</span> <span class="token6">// 心跳間隔55秒</span> <span class="token1">define</span><span class="token2">(</span><span class="token4">'HEARTBEAT_TIME'</span><span class="token2">,</span> <span class="token3">55</span><span class="token2">)</span><span class="token2">;</span> $worker <span class="token">=</span> <span class="token5">new</span> <span class="token1">Worker</span><span class="token2">(</span><span class="token4">'text://0.0.0.0:1234'</span><span class="token2">)</span><span class="token2">;</span> $worker<span class="token">-</span><span class="token">></span>onMessage <span class="token">=</span> <span class="token5">function</span><span class="token2">(</span>$connection<span class="token2">,</span> $msg<span class="token2">)</span> <span class="token2">{</span> <span class="token6">// 給connection臨時設置一個lastMessageTime屬性,用來記錄上次收到消息的時間</span> $connection<span class="token">-</span><span class="token">></span>lastMessageTime <span class="token">=</span> <span class="token1">time</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> <span class="token6">// 其它業務邏輯...</span> <span class="token2">}</span><span class="token2">;</span> <span class="token6">// 進程啟動后設置一個每秒運行一次的定時器</span> $worker<span class="token">-</span><span class="token">></span>onWorkerStart <span class="token">=</span> <span class="token5">function</span><span class="token2">(</span>$worker<span class="token2">)</span> <span class="token2">{</span> Timer<span class="token2">:</span><span class="token2">:</span><span class="token1">add</span><span class="token2">(</span><span class="token3">1</span><span class="token2">,</span> <span class="token5">function</span><span class="token2">(</span><span class="token2">)</span><span class="token1">use</span><span class="token2">(</span>$worker<span class="token2">)</span><span class="token2">{</span> $time_now <span class="token">=</span> <span class="token1">time</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> <span class="token1">foreach</span><span class="token2">(</span>$worker<span class="token">-</span><span class="token">></span>connections as $connection<span class="token2">)</span> <span class="token2">{</span> <span class="token6">// 有可能該connection還沒收到過消息,則lastMessageTime設置為當前時間</span> <span class="token5">if</span> <span class="token2">(</span><span class="token1">empty</span><span class="token2">(</span>$connection<span class="token">-</span><span class="token">></span>lastMessageTime<span class="token2">)</span><span class="token2">)</span> <span class="token2">{</span> $connection<span class="token">-</span><span class="token">></span>lastMessageTime <span class="token">=</span> $time_now<span class="token2">;</span> <span class="token5">continue</span><span class="token2">;</span> <span class="token2">}</span> <span class="token6">// 上次通訊時間間隔大于心跳間隔,則認為客戶端已經下線,關閉連接</span> <span class="token5">if</span> <span class="token2">(</span>$time_now <span class="token">-</span> $connection<span class="token">-</span><span class="token">></span>lastMessageTime <span class="token">></span> HEARTBEAT_TIME<span class="token2">)</span> <span class="token2">{</span> $connection<span class="token">-</span><span class="token">></span><span class="token1">close</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> <span class="token2">}</span> <span class="token2">}</span> <span class="token2">}</span><span class="token2">)</span><span class="token2">;</span> <span class="token2">}</span><span class="token2">;</span> Worker<span class="token2">:</span><span class="token2">:</span><span class="token1">runAll</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> ``` ``` - 定時任務處理隊列 ``` <pre class="calibre16">``` use \Workerman\Worker<span class="token2">;</span> use \Workerman\Lib\Timer<span class="token2">;</span> require_once __DIR__ <span class="token2">.</span> <span class="token4">'/Workerman/Autoloader.php'</span><span class="token2">;</span> require_once __DIR__ <span class="token2">.</span> <span class="token4">'/Workerman/Mysql.php'</span><span class="token2">;</span> $worker <span class="token">=</span> <span class="token5">new</span> <span class="token1">Worker</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> <span class="token6">// 開啟多少個進程運行定時任務,注意業務是否在多進程有并發問題</span> $worker<span class="token">-</span><span class="token">></span>count <span class="token">=</span> <span class="token3">4</span><span class="token2">;</span> $worker<span class="token">-</span><span class="token">></span>onWorkerStart <span class="token">=</span> <span class="token5">function</span><span class="token2">(</span>$worker<span class="token2">)</span> <span class="token2">{</span> global $db<span class="token2">,</span>$redis<span class="token2">;</span> $db <span class="token">=</span> <span class="token5">new</span> <span class="token1"><span class="token2">\</span>Workerman<span class="token2">\</span>MySQL<span class="token2">\</span>Connection</span><span class="token2">(</span><span class="token4">'127.0.0.1'</span><span class="token2">,</span> <span class="token4">'3306'</span><span class="token2">,</span> <span class="token4">'root'</span><span class="token2">,</span> <span class="token4">'mysql'</span><span class="token2">,</span> <span class="token4">'laravel'</span><span class="token2">)</span><span class="token2">;</span> $redis <span class="token">=</span> <span class="token5">new</span> <span class="token1">Redis</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> $redis<span class="token">-</span><span class="token">></span><span class="token1">connect</span><span class="token2">(</span><span class="token4">'127.0.0.1'</span><span class="token2">,</span> <span class="token3">6379</span><span class="token2">)</span><span class="token2">;</span> <span class="token5">if</span><span class="token2">(</span>$worker<span class="token">-</span><span class="token">></span>id <span class="token">==</span> <span class="token3">0</span><span class="token2">)</span><span class="token6">//只在第一個上邊使用定時</span> <span class="token2">{</span> Timer<span class="token2">:</span><span class="token2">:</span><span class="token1">add</span><span class="token2">(</span><span class="token3">5</span><span class="token2">,</span> <span class="token5">function</span><span class="token2">(</span><span class="token2">)</span><span class="token2">{</span> global $redis<span class="token2">;</span> <span class="token5">while</span><span class="token2">(</span><span class="token3">true</span><span class="token2">)</span> <span class="token2">{</span> $res <span class="token">=</span> $redis<span class="token">-</span><span class="token">></span><span class="token1">rpop</span><span class="token2">(</span><span class="token4">"sendsms"</span><span class="token2">)</span><span class="token2">;</span> <span class="token5">if</span> <span class="token2">(</span>$res<span class="token2">)</span> <span class="token2">{</span> $arr <span class="token">=</span> <span class="token1">unserialize</span><span class="token2">(</span>$res<span class="token2">)</span><span class="token2">;</span><span class="token6">//取出隊列</span> echo <span class="token4">'取出成功'</span><span class="token2">.</span><span class="token1">date</span><span class="token2">(</span><span class="token4">"Y-m-d H:i:s"</span><span class="token2">)</span><span class="token2">.</span><span class="token4">"\n"</span><span class="token2">;</span> <span class="token2">}</span> <span class="token5">else</span> <span class="token2">{</span> <span class="token5">return</span><span class="token2">;</span> <span class="token2">}</span> <span class="token2">}</span> <span class="token2">}</span><span class="token2">)</span><span class="token2">;</span> <span class="token2">}</span> <span class="token2">}</span><span class="token2">;</span> <span class="token6">// 運行worker</span> Worker<span class="token2">:</span><span class="token2">:</span><span class="token1">runAll</span><span class="token2">(</span><span class="token2">)</span><span class="token2">;</span> ``` ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看