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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [Crontab定時任務-workerman手冊](https://www.workerman.net/doc/workerman/protocols/how-protocols.html) [一些例子-workerman手冊](https://www.workerman.net/doc/workerman/protocols/example.html) **Worker監聽自定義協議的端口** 最終的目錄結構 ~~~ ├── Protocols // 這是要創建的Protocols目錄 │?? └── MyTextProtocol.php // 這是要創建的自定義協議文件 ├── test.php // 這是要創建的test腳本 └── Workerman // Workerman源碼目錄,里面代碼不要動 ~~~ 1、創建Protocols目錄,并創建一個協議文件 Protocols/MyTextProtocol.php(參照上面目錄結構) ~~~php // 用戶自定義協議命名空間統一為Protocols namespace Protocols; //簡單文本協議,協議格式為 文本+換行 class MyTextProtocol { // 分包功能,返回當前包的長度 public static function input($recv_buffer) { // 查找換行符 $pos = strpos($recv_buffer, "\n"); // 沒找到換行符,表示不是一個完整的包,返回0繼續等待數據 if($pos === false) { return 0; } // 查找到換行符,返回當前包的長度,包括換行符 return $pos+1; } // 收到一個完整的包后通過decode自動解碼,這里只是把換行符trim掉 public static function decode($recv_buffer) { return trim($recv_buffer); } // 給客戶端send數據前會自動通過encode編碼,然后再發送給客戶端,這里加了換行 public static function encode($data) { return $data."\n"; } } ~~~ 2、使用MyTextProtocol協議監聽處理請求 參照上面最終目錄結構創建test.php文件 ~~~php use Workerman\Worker; use Workerman\Connection\TcpConnection; require_once __DIR__ . '/vendor/autoload.php'; // #### MyTextProtocol worker #### $text_worker = new Worker("MyTextProtocol://0.0.0.0:5678"); /* * 收到一個完整的數據(結尾是換行)后,自動執行MyTextProtocol::decode('收到的數據') * 結果通過$data傳遞給onMessage回調 */ $text_worker->onMessage = function(TcpConnection $connection, $data) { var_dump($data); /* * 給客戶端發送數據,會自動調用MyTextProtocol::encode('hello world')進行協議編碼, * 然后再發送到客戶端 */ $connection->send("hello world"); }; // run all workers Worker::runAll(); ~~~ 3、測試 打開終端,進入到test.php所在目錄,執行`php test.php start` ~~~ php test.php start Workerman[test.php] start in DEBUG mode ----------------------- WORKERMAN ----------------------------- Workerman version:3.2.7 PHP version:5.4.37 ------------------------ WORKERS ------------------------------- user worker listen processes status root none myTextProtocol://0.0.0.0:5678 1 [OK] ---------------------------------------------------------------- Press Ctrl-C to quit. Start success. ~~~ 打開終端,利用telnet測試(建議用linux系統的telnet) 假設是本機測試, 終端執行 telnet 127.0.0.1 5678 然后輸入 hi回車 會接收到數據hello world\\n ~~~ telnet 127.0.0.1 5678 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. hi hello world ~~~
                  <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>

                              哎呀哎呀视频在线观看