<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 03.swoole_server函數列表 --- [TOC] ##**swoole_server::__construct** **功能描述**:創建一個swoole_server資源對象<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::__construct(string $host, int $port, int $mode = SWOOLE_PROCESS, int $sock_type = SWOOLE_SOCK_TCP); // 公共函數 function swoole_server_create(string $host, int $port, int $mode = SWOOLE_PROCESS, int $sock_type = SWOOLE_SOCK_TCP); ``` **返回**:一個swoole_server對象<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string host | 監聽的IP地址 | | int port | 監聽的端口號 | | int mode | 運行模式 | | int sock_type | 指定的socket類型 | **說明**: host、port、socket_type的詳細說明見[swoole_server::addlistener](#swoole_serveraddlistener)。<br> mode指定了swoole_server的運行模式,共有如下三種:<br> | mode | 類型 | 說明 | | -------- | -------- | -------- | | SWOOLE_BASE | Base模式 | 傳統的異步非阻塞Server。在Reactor內直接回調PHP的函數。如果回調函數中有阻塞操作會導致Server退化為同步模式。worker_num參數對與BASE模式仍然有效,swoole會啟動多個Reactor進程 | | SWOOLE_THREAD | 線程模式(已廢棄)| 多線程Worker模式,Reactor線程來處理網絡事件輪詢,讀取數據。得到的請求交給Worker線程去處理。多線程模式比進程模式輕量一些,而且線程之間可以共享堆棧和資源。 訪問共享內存時會有同步問題,需要使用Swoole提供的鎖機制來保護數據。 | | SWOOLE_PROCESS | 進程模式(默認) | Swoole提供了完善的進程管理、內存保護機制。 在業務邏輯非常復雜的情況下,也可以長期穩定運行,適合業務邏輯非常復雜的場景。 | **樣例**:<br> ```php $serv = new swoole_server("127.0.0.1" , 8888 , SWOOLE_PROCESS , SWOOLE_SOCK_TCP); ``` ##**swoole_server::set** **功能描述**:設置swoole_server運行時的各項參數<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::set(array $setting); // 公共函數 function swoole_server_set(swoole_server $server, array $setting); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | array setting | 配置選項數組,采用key-value形式 | **說明**:<br> 該函數必須在[swoole_server::start](#swoole_serverstart)函數調用前調用。<br> 全部swoole_server的配置參數[點此查看](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/01.%E9%85%8D%E7%BD%AE%E9%80%89%E9%A1%B9.md)<br> **樣例**:<br> ```php $serv->set( array( 'worker_num' => 8, 'max_request' => 10000, 'max_conn' => 100000, 'dispatch_mode' => 2, 'debug_mode'=> 1, 'daemonize' => false, ) ); ``` ##**swoole_server::on** **功能描述**:綁定swoole_server的相關回調函數<br> **函數原型**:<br> ```php // 類成員函數 public function bool swoole_server->on(string $event, mixed $callback); ``` **返回**:設置成功返回true,否則返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string event | 回調的名稱(大小寫不敏感) | | mixed callback | 回調的PHP函數,可以是函數名的字符串,類靜態方法,對象方法數組,匿名函數 | **說明**:<br> 該函數必須在[swoole_server::start](#swoole_serverstart)函數調用前調用。<br> 此方法與[swoole_server::handler](#swoole_serverhandler)功能相同,作用是與swoole_client風格保持一致。<br> [swoole_server::on](#swoole_serveron)中事件名稱字符串不要加on。<br> 全部的回調函數列表[點此查看](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md)<br> **樣例**:<br> ```php $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $serv->on('receive', array( $myclass, 'onReceive' ) ); // onReceive是myclass的成員函數 ``` ##**swoole_server::addlistener** **功能描述**:給swoole_server增加一個監聽的地址和端口<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::addlistener(string $host, int $port, $type = SWOOLE_SOCK_TCP); // 公共函數 function swoole_server_addlisten(swoole_server $serv, string $host, int $port, $type = SWOOLE_SOCK_TCP); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string host | 監聽的IP地址 | | int port | 監聽的端口號 | | int sock_type | 指定的socket類型 | **說明**: swoole支持如下socket類型:<br> | sock_type | 說明 | | -------- | -------- | | SWOOLE_TCP/SWOOLE_SOCK_TCP | TCP IPv4 Socket | | SWOOLE_TCP6/SWOOLE_SOCK_TCP6 | TCP IPv6 Socket | | SWOOLE_UDP/SWOOLE_SOCK_UDP | UDP IPv4 Socket | | SWOOLE_UDP6/SWOOLE_SOCK_UDP6 | UDP IPv4 Socket | | SWOOLE_UNIX_DGRAM | Unix UDP Socket | | SWOOLE_UNIX_STREAM | Unix TCP Socket | > Unix Socket僅在1.7.1+后可用,此模式下**host**參數必須填寫可訪問的文件路徑,**port**參數忽略<br> Unix Socket模式下,客戶端**fd**將不再是數字,而是一個文件路徑的字符串<br> SWOOLE_TCP等是1.7.0+后提供的簡寫方式,與1.7.0前的SWOOLE_SOCK_TCP是等同的<br> **樣例**:<br> ```php $serv->addlistener("127.0.0.1", 9502, SWOOLE_SOCK_TCP); $serv->addlistener("192.168.1.100", 9503, SWOOLE_SOCK_TCP); $serv->addlistener("0.0.0.0", 9504, SWOOLE_SOCK_UDP); $serv->addlistener("/var/run/myserv.sock", 0, SWOOLE_UNIX_STREAM); swoole_server_addlisten($serv, "127.0.0.1", 9502, SWOOLE_SOCK_TCP); ``` ##**swoole_server::handler** **功能描述**:設置Server的事件回調函數<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::handler(string $event_name, mixed $event_callback_function); // 公共函數 function swoole_server_handler(swoole_server $serv, string $event_name, mixed $event_callback_function); ``` **返回**:設置成功返回true,否則返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string event_name | 回調的名稱(大小寫不敏感) | | mixed event_callback_function | 回調的PHP函數,可以是函數名的字符串,類靜態方法,對象方法數組,匿名函數 | **說明**: 該函數必須在[swoole_server::start](#swoole_server::start)函數調用前調用。<br> 事件名稱字符串要加on。<br> 全部的回調函數列表[點此查看](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md)<br> > onConnect/onClose/onReceive這3個回調函數必須設置。其他事件回調函數可選<br> 如果設定了timer定時器,onTimer事件回調函數也必須設置<br> 如果啟用了task_worker,onTask/onFinish事件回調函數必須設置<br> **樣例**: ```php $serv->handler('onStart', 'my_onStart'); $serv->handler('onStart', array($this, 'my_onStart')); $serv->handler('onStart', 'myClass::onStart'); ``` ##**swoole_server::start** **功能描述**:啟動server,開始監聽所有TCP/UDP端口<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::start() ``` **返回**:啟動成功返回true,否則返回false<br> **參數說明**:無<br> **說明**:<br> 啟動成功后會創建worker_num+2個進程:Master進程+Manager進程+worker_num 個 Worker進程。<br> 另外。啟用task_worker會增加task_worker_num個Worker進程<br> 三種進程的說明如下: | 進程類型 | 說明 | | -------- | -------- | | Master進程 | 主進程內有多個Reactor線程,基于epoll/kqueue進行網絡事件輪詢。收到數據后轉發到Worker進程去處理 | | Manager進程 | 對所有Worker進程進行管理,Worker進程生命周期結束或者發生異常時自動回收,并創建新的Worker進程 | | Worker進程 | 對收到的數據進行處理,包括協議解析和響應請求 | **樣例**: ```php $serv->start(); ``` ##**swoole_server::reload** **功能描述**:重啟所有worker進程。<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::reload() ``` **返回**:調用成功返回true,否則返回false<br> **參數說明**:無<br> **說明**:<br> 調用后會向Manager發送一個SIGUSR1信號,平滑重啟全部的Worker進程(所謂平滑重啟,是指重啟動作會在Worker處理完正在執行的任務后發生,并不會中斷正在運行的任務。)<br> 小技巧:在[onWorkerStart](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#3onworkerstart)回調中require相應的php文件,當這些文件被修改后,只需要通過SIGUSR1信號即可實現服務器熱更新。<br> 1.7.7版本增加了僅重啟task_worker的功能。只需向服務器發送SIGUSR2即可<br> **樣例**: ```php $serv->reload(); ``` ##**swoole_server::shutdown** **功能描述**:關閉服務器。<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::shutdown() ``` **返回**:調用成功返回true,否則返回false<br> **參數說明**:無<br> **說明**:<br> 此函數可以用在worker進程內,平滑關閉全部的Worker進程。<br> 也可向Master進程發送SIGTERM信號關閉服務器。<br> **樣例**: ```php $serv->shutdown(); ``` ##**swoole_server::addtimer** **功能描述**:設置一個固定間隔的定時器<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::addtimer(int $interval); // 公共函數 function swoole_server_addtimer(swoole_server $serv, int $interval); ``` **返回**:設置成功返回true,否則返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int interval | 定時器的時間間隔,單位為毫秒ms | **說明**:<br> swoole定時器的最小顆粒是1毫秒,支持多個不同間隔的定時器。<br> 注意不能存在2個相同間隔時間的定時器。<br> 使用多個定時器時,其他定時器必須為最小定時器時間間隔的整數倍。<br> 該函數只能在onWorkerStart/onConnect/onReceive/onClose回調函數中調用。<br> 增加定時器后需要為Server設置[onTimer](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#8ontimer)回調函數,否則Server將無法啟動。<br> **樣例**: ```php $serv->addtimer(1000); //1s swoole_server_addtimer($serv,20); //20ms ``` ##**swoole_server::deltimer** **功能描述**:刪除指定的定時器。<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::deltimer(int $interval); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int interval | 定時器的時間間隔,單位為毫秒ms | **說明**:<br> 刪除間隔為interval的定時器 **樣例**: ```php $serv->deltimer(1000); ``` ##**swoole_server::after** **功能描述**:在指定的時間后執行函數<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::after(int $after_time_ms, mixed $callback_function, mixed params); // 公共函數 function swoole_timer_after(swoole_server $serv, int $after_time_ms, mixed $callback_function, mixed params); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int after_time_ms | 指定時間,單位為毫秒ms | | mixed callback_function | 指定的回調函數 | | mixed params | 指定的回調函數的參數 | **說明**:<br> 創建一個一次性定時器,在指定的after_time_ms時間后調用callback_funciton回調函數,執行完成后就會銷毀。<br> callback_function函數的參數為指定的params<br> 需要swoole-1.7.7以上版本。<br> **樣例**: ```php $serv->after(1000, function( $params ){ echo "Do something\n"; } , "data" ); ``` ##**swoole_server::close** **功能描述**:關閉客戶端連接<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::close(int $fd, int $from_id = 0); ``` **返回**:關閉成功返回true,失敗返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int fd | 指定關閉的fd | | int from_id | fd來自于哪個Reactor(swoole-1.6以后已廢棄該參數) | **說明**:<br> 調用close關閉連接后,連接并不會馬上關閉,因此不要在close之后立即寫清理邏輯,而是應該在[onClose](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#5onclose)回調中處理<br> **樣例**: ```php $serv->close( $fd ); ``` ##**swoole_server::send** **功能描述**:向客戶端發送數據<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::send(int $fd, string $data, int $from_id = 0); ``` **返回**:發送成功返回true,失敗返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int fd | 指定發送的fd | | string data | 發送的數據 | | int from_id | fd來自于哪個Reactor | **說明**:<br> - data,發送的數據,最大不得超過2M。send操作具有原子性,多個進程同時調用send向同一個連接發送數據,不會發生數據混雜。 - 如果要發送超過2M的數據,建議將數據寫入臨時文件,然后通過sendfile接口直接發送文件 - UDP協議,send會直接在worker進程內發送數據包 - 向UDP客戶端發送數據,必須要傳入from_id - 發送成功會返回true,如果連接已被關閉或發送失敗會返回false - swoole-1.6以上版本不需要from_id - UDP協議使用fd保存客戶端IP,from_id保存from_fd和port - UDP協議如果是在onReceive后立即向客戶端發送數據,可以不傳from_id **樣例**: ```php $serv->send( $fd , "Hello World"); ``` ##**swoole_server::sendfile** **功能描述**:發送文件到TCP客戶端連接<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::sendfile(int $fd, string $filename); ``` **返回**:發送成功返回true,失敗返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int fd | 指定發送的fd | | string filename | 發送的文件名 | **說明**:<br> sendfile函數調用OS提供的sendfile系統調用,由操作系統直接讀取文件并寫入socket。sendfile只有2次內存拷貝,使用此函數可以降低發送大量文件時操作系統的CPU和內存占用。<br> **樣例**: ```php $serv->sendfile($fd, __DIR__.'/test.jpg'); ``` ##**swoole_server::connection_info** **功能描述**:獲取連接的信息<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::connection_info(int $fd, int $from_id = 0); ``` **返回**:如果fd存在,返回一個數組,連接不存在或已關閉返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int fd | 指定發送的fd | | int from_id | 來自于哪個Reactor | **說明**:<br> UDP socket調用該參數時必須傳入from_id.<br> 返回的結果如下: | 名稱 | 說明 | | -------- | -------- | | int from_id | 來自于哪個Reactor | | int from_fd | 來自哪個Server Socket | | int from_port | 來自哪個Server端口 | | int remote_port | 客戶端連接的端口 | | string remote_ip | 客戶端連接的ip | | int connect_time | 連接到Server的時間,單位秒 | | int last_time | 最后一次發送數據的時間,單位秒 | sendfile函數調用OS提供的sendfile系統調用,由操作系統直接讀取文件并寫入socket。sendfile只有2次內存拷貝,使用此函數可以降低發送大量文件時操作系統的CPU和內存占用。<br> **樣例**: ```php $fdinfo = $serv->connection_info($fd); $udp_client = $serv->connection_info($fd, $from_id); ``` ##**swoole_server::connection_list** **功能描述**:遍歷當前Server的全部客戶端連接<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::connection_list(int $start_fd = 0, int $pagesize = 10); ``` **返回**:調用成功將返回一個數字索引數組,元素是取到的fd。數組會按從小到大排序。最后一個fd作為新的start_fd再次嘗試獲取。<br> 調用失敗返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int start_fd | 起始fd | | int pagesize | 每頁取多少條,最大不得超過100. | **說明**:<br> connection_list僅可用于TCP,UDP服務器需要自行保存客戶端信息<br> **樣例**: ```php $start_fd = 0; while(true) { $conn_list = $serv->connection_list($start_fd, 10); if($conn_list===false) { echo "finish\n"; break; } $start_fd = end($conn_list); var_dump($conn_list); foreach($conn_list as $fd) { $serv->send($fd, "broadcast"); } } ``` ##**swoole_server::stats** **功能描述**:獲取當前Server的活動TCP連接數,啟動時間,accpet/close的總次數等信息。<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server->stats(); ``` **返回**:結果數組<br> **參數說明**:無<br> **說明**:<br> stats方法在1.7.5+后可用<br> | 名稱 | 說明 | | -------- | -------- | | int start_time | 啟動時間 | | int connection_num | 當前的連接數 | | int accept_count | accept總次數 | | int close_count | close連接的總數 | **樣例**: ```php $status = $serv->stats(); ``` ##**swoole_server::task** **功能描述**:投遞一個異步任務到task_worker池中<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::task(string $data, int $dst_worker_id = -1); ``` **返回**:調用成功返回task_worker_id,失敗返回false<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string data | task數據 | | int dst_worker_id | 指定投遞給哪個task進程,默認隨機投遞 | **說明**:<br> 此功能用于將慢速的任務異步地去執行,調用task函數會立即返回,Worker進程可以繼續處理新的請求。<br> 函數會返回一個`$task_id`數字,表示此任務的ID<br> 任務完成后,可以通過return(低于swoole-1.7.2版本使用[finish](#swoole_serverfinish)函數)將結果通過[onFinish](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#7onfinish)回調返回給Worker進程。<br> 發送的data必須為字符串,如果是數組或對象,請在業務代碼中進行serialize處理,并在[onTask](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#6ontask)/[onFinish](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#7onfinish)中進行unserialize。<br> data可以為二進制數據,最大長度為**8K**(超過8K可以使用臨時文件共享)。字符串可以使用gzip進行壓縮。<br> 使用task必須為Server設置[onTask](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#6ontask)和[onFinish](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#7onfinish)回調,并指定[task_worker_num](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/01.%E9%85%8D%E7%BD%AE%E9%80%89%E9%A1%B9.md#6task_worker_num)配置參數。 **樣例**: ```php $task_id = $serv->task("some data"); ``` ##**swoole_server::taskwait** **功能描述**:投遞一個同步任務到task_worker池中<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::taskwait(string $task_data, float $timeout = 0.5, int $dst_worker_id = -1); ``` **返回**:task執行的結果<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string data | task數據 | | float timeout | 超時時間 | | int dst_worker_id | 指定投遞給哪個task進程,默認隨機投遞 | **說明**:<br> taskwait與task方法作用相同,用于投遞一個異步的任務到task進程池去執行。與task不同的是taskwait是阻塞等待的,直到任務完成或者超時返回。<br> 任務完成后,可以通過return直接返回結果<br> **樣例**: ```php $task_id = $serv->taskwait("some data", 30); ``` ##**swoole_server::finish** **功能描述**:傳遞Task結果數據給worker進程<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::finish(string $task_data); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string data | 結果數據 | **說明**:<br> 使用swoole_server::finish函數必須為Server設置[onFinish](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#7onfinish)回調函數。此函數只可用于Task Worker進程的[onTask](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/02.%E4%BA%8B%E4%BB%B6%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0.md#6ontask)回調中<br> swoole_server::finish是可選的。如果Worker進程不關心任務執行的結果,可以不調用此函數<br> 此函數在swoole-1.7.2以上版本已廢棄,使用return代替。<br> **樣例**: ```php $serv->finish("result data"); ``` ##**swoole_server::heartbeat** **功能描述**:進行心跳檢測<br> **函數原型**:<br> ```php // 類成員函數 public function swoole_server::heartbeat(bool $if_close_connection = true); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | bool if_close_connection | 是否關閉超時的連接,默認為true | **說明**:<br> 該函數會主動發起一次檢測,遍歷全部連接,根據設置的[heartbeat_check_interval](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/01.%E9%85%8D%E7%BD%AE%E9%80%89%E9%A1%B9.md#11heartbeat_check_interval)和[heartbeat_idle_time](https://github.com/LinkedDestiny/swoole-doc/blob/master/doc/01.%E9%85%8D%E7%BD%AE%E9%80%89%E9%A1%B9.md#12heartbeat_idle_time)參數,找到那些處于idle閑置狀態的連接<br> swoole默認會直接關閉這些連接,heartbeat會返回這些連接的fd<br> 如果if_close_connection為false,則heartbeat會返回這些idle連接的fd,但不會關閉這些連接<br> if_close_connection參數 在swoole-1.7.4以上版本可用<br> **樣例**: ```php $serv->heartbeat(); ``` ##**swoole_get_mysqli_sock** **功能描述**:獲取mysqli的socket文件描述符<br> **函數原型**:<br> ```php // 公共函數 int swoole_get_mysqli_sock(mysqli $db) ``` **返回**:mysqli的fd<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | mysqli db | mysqli的連接 | **說明**:<br> 可將mysql的socket增加到swoole中,執行異步MySQL查詢。如果想要使用異步MySQL,需要在編譯swoole時制定--enable-async-mysql<br> swoole_get_mysqli_sock僅支持mysqlnd驅動<br> 即使是異步MySQL也需要一個連接池,并發SQL必須有多個連接。<br> **樣例**: ```php $db = new mysqli; $db->connect('127.0.0.1', 'root', 'root', 'test'); $db->query("show tables", MYSQLI_ASYNC); swoole_event_add(swoole_get_mysqli_sock($db), function($db_sock) { global $db; $res = $db->reap_async_query(); var_dump($res->fetch_all(MYSQLI_ASSOC)); swoole_event_exit(); }); ``` ##**swoole_set_process_name** **功能描述**:設置進程的名稱<br> **函數原型**:<br> ```php // 公共函數 void swoole_set_process_name(string $name); ``` **返回**:無<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | string name | 進程名稱 | **說明**:<br> 修改進程名稱后,通過ps命令看到的將不再是php your_file.php,而是設定的字符串<br> > 在swoole_server_create之前修改為manager進程名稱 onStart調用時修改為主進程名稱 onWorkerStart修改為worker進程名稱 swoole_set_process_name存在兼容性問題,優先使用PHP內置的cli_set_process_title函數<br> **樣例**: ```php woole_set_process_name("swoole server"); ``` ##**swoole_version** **功能描述**:獲取swoole擴展的版本號<br> **函數原型**:<br> ```php // 公共函數 string swoole_version(); ``` **返回**:swoole擴展的版本號<br> **參數說明**:無<br> **說明**:<br> **樣例**: ```php echo swoole_version(); ``` ##**swoole_strerror** **功能描述**:將標準的Unix Errno錯誤碼轉換成錯誤信息<br> **函數原型**:<br> ```php // 公共函數 string swoole_strerror(int $errno); ``` **返回**:轉化后的錯誤信息<br> **參數說明**:<br> | 參數 | 說明 | | -------- | -------- | | int errno | errno錯誤碼 | **說明**:<br> **樣例**: ```php echo swoole_strerror( $errno ); ``` ##**swoole_errno** **功能描述**:獲取最近一次系統調用的錯誤碼<br> **函數原型**:<br> ```php // 公共函數 int swoole_errno(); ``` **返回**:最近一次系統調用的錯誤碼<br> **參數說明**:無<br> **說明**:<br> 錯誤碼的值與操作系統有關。可是使用swoole_strerror將錯誤轉換為錯誤信息。<br> **樣例**: ```php echo swoole_strerror(swoole_errno()); ``` ##**swoole_get_local_ip** **功能描述**:此函數用于獲取本機所有網絡接口的IP地址<br> **函數原型**:<br> ```php // 公共函數 array swoole_get_local_ip(); ``` **返回**:以interface名稱為key的關聯數組<br> **參數說明**:無<br> **說明**:<br> 目前只返回IPv4地址,返回結果會過濾掉本地loop地址127.0.0.1<br> 返回結果樣例array("eth0" => "192.168.1.100"); **樣例**: ```php var_dump(swoole_get_local_ip()); ```
                  <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>

                              哎呀哎呀视频在线观看