国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Swoole筆記(四)

yzd / 710人閱讀

摘要:配合模塊,創建的子進程可以異步的事件驅動模式。默認為阻塞讀取。函數用于將一個加入到的事件監聽中。為事件類型的掩碼,可選擇關閉開啟可讀可寫事件,如,,或者。在程序中使用,可以理解為在進程中將此注冊到事件中。

Process

Process是swoole內置的進程管理模塊,用來替代PHP的pcntl擴展。

swoole_process支持重定向標準輸入和輸出,在子進程內echo不會打印屏幕,而是寫入管道,讀鍵盤輸入可以重定向為管道讀取數據。

配合swoole_event模塊,創建的PHP子進程可以異步的事件驅動模式。

創建子進程

函數原型:

int swoole_process::__construct(mixed $function, $redirect_stdin_stdout = false, $create_pipe = true);

$function,子進程創建成功后要執行的函數,底層會自動將函數保存到對象的callback屬性上。

如果希望更改執行的函數,可賦值新的函數到對象的callback屬性。

$redirect_stdin_stdout,重定向子進程的標準輸入和輸出。啟用此選項后,在進程內echo將不是打印屏幕,而是寫入到管道。讀取鍵盤輸入將變為從管道中讀取數據。默認為阻塞讀取。

$create_pipe,是否創建管道,啟用$redirect_stdin_stdout后,此選項將忽略用戶參數,強制為true 如果子進程內沒有進程間通信,可以設置為false。

1.7.22或更高版本允許設置管道的類型,默認為SOCK_STREAM流式
參數$create_pipe為2時,管道類型將設置為SOCK_DGRAM

read();
        passthru($cmd);
    }    
}, true, 2);
$process->start();

$process->write("ls -l");//將參數傳入子進程內
echo $data = $process->read();//獲取執行結果

實例:web版本的shell
https://github.com/52fhy/swoo...

EventLoop

swoole還提供了直接操作底層epoll/kqueue事件循環的接口。可將其他擴展創建的socket,PHP代碼中stream/socket擴展創建的socket等加入到Swoole的EventLoop中。

swoole_event_add函數用于將一個socket加入到swoole的reactor事件監聽中。 函數原型:

bool swoole_event_add(int $sock, mixed $read_callback, mixed $write_callback = null, int `$flags` = null);

$sock支持文件描述符、stream資源、sockets資源。

$read_callback為可讀回調函數。

$write_callback為可寫事件回調。

$flags為事件類型的掩碼,可選擇關閉/開啟可讀可寫事件,如SWOOLE_EVENT_READSWOOLE_EVENT_WRITE,或者SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE

在Server程序中使用,可以理解為在worker/taskworker進程中將此socket注冊到epoll事件中。

在Client程序中使用,可以理解為在客戶端進程中將此socket注冊到epoll事件中。

示例:


對比一下,下面這個會阻塞進程:


" ;
} else {
     fwrite ( $fp ,  "GET / HTTP/1.1
Host: www.52fhy.com

" );
    while (! feof ( $fp )) {
        echo  fgets ( $fp ,  1024 );
    }
     fclose ( $fp );
}

echo "Finish
";

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25665.html

相關文章

  • PHP多進程系列筆記(五)

    摘要:消息隊列更常見的用途是主進程分配任務,子進程消費執行。子進程前面加了個,這是為了防止父進程還未往消息隊列中加入內容直接退出。 前面幾節都是講解pcntl擴展實現的多進程程序。本節給大家介紹swoole擴展的swoole_process模塊。 swoole多進程 swoole_process 是swoole提供的進程管理模塊,用來替代PHP的pcntl擴展。 首先,確保安裝的swoole...

    qianfeng 評論0 收藏0
  • swoole 學習筆記swoole 真的優秀一個框架

    摘要:所以,我感覺學習,需要一個引導。學習參考鏈接喵星球特別厲害的一個官網的幾個框架文檔優勢先看一下的結構設計的應用場景的設計項目中引入一個簡易的具體參考一篇文章,集合和的簡易實例項目中引入結合致敬 前期學完了操作系統,特別是知道了進程,線程 調度的問題。回來看,發現了很多細節。第三次看文檔,最初經一個高手朋友的介紹,看swoole,說文檔寫的賊好。但是看的時候,也是很一頭霧水,只知道把de...

    13651657101 評論0 收藏0
  • Swoole筆記(一)

    摘要:修復添加超過萬個以上定時器時發生崩潰的問題增加模塊,下高性能序列化庫修復監聽端口設置無效的問題等。線程來處理網絡事件輪詢,讀取數據。當的三次握手成功了以后,由這個線程將連接成功的消息告訴進程,再由進程轉交給進程。此時進程觸發事件。 本文示例代碼詳見:https://github.com/52fhy/swoo...。 簡介 Swoole是一個PHP擴展,提供了PHP語言的異步多線程服務器...

    SHERlocked93 評論0 收藏0
  • swoole 學習筆記

    摘要:安裝準備或更高版本或更高版本安裝擴展配置支持編輯在其中加入擴展支持服務端代碼服務端客戶端代碼測試代碼在命令模式下輸入重新再開一個窗口可以用檢測如服務端客戶端如上,表示服務端啟動,客戶端連接服務端返回消息,一個閉環形成開發者頭條 1.安裝準備 php-5.3.10 // 或更高版本 gcc-4.4 //或更高版本 make autoconf 2.安裝swoole擴展 w...

    justCoding 評論0 收藏0
  • Swoole筆記(二)

    摘要:配置了參數后將會啟用功能,務必要注冊個事件回調函數。周期性定時器一次性定時器清除定時器定時器回調函數注意最大不得超過。進程中不能添加定時器。建議在回調里寫定時器。定時器示例防止重復每隔觸發一次后執行此函數 本文示例代碼詳見:https://github.com/52fhy/swoo...。 重新打開日志 在1.8.11及之后版本支持重新打開日志:向Server主進程發送SIGRTMIN...

    jsummer 評論0 收藏0

發表評論

0條評論

yzd

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<