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

資訊專欄INFORMATION COLUMN

swoolefy-基于swoole擴展實現的高性能的常駐內存型API和Web應用服務框架

lewinlee / 1437人閱讀

摘要:是一個基于擴展實現的輕量級高性能的常駐內存型的和應用服務框架高度封裝了,,服務器,以及基于實現可擴展的服務,同時支持包方式安裝部署項目。基于實用,抽象事件處理類,實現與底層的回調的解耦,支持同步異步調用,內置等常用組件等。

swoolefy

swoolefy是一個基于swoole擴展實現的輕量級高性能的常駐內存型的API和Web應用服務框架,高度封裝了http,websocket,udp服務器,以及基于tcp實現可擴展的rpc服務,同時支持composer包方式安裝部署項目。基于實用,swoolefy抽象Event事件處理類,實現與底層的回調的解耦,支持同步|異步調用,內置view、Log、session、mysql、redis、memcached、mongodb等常用組件等。

swoolefy是一個適合學習swoole的框架,特別適合中小團隊,用過Tp的phper基本都會用,有過Yii2的經驗者,那就更容易入手了。同時swoolefy底層屏蔽了swoole與傳統php-fpm的一些差異,讓大部分的phper使用起來可以像使用php-fpm那樣,輕松入手。

實現的功能特性

1、輕量級的框架,實現路由與調度,MVC三層,當然也可以配置多層
2、支持composer的PSR4規范和實現自定義注冊命名空間
3、支持多協議,目前支持http,websocket,tcp,udp,以及基于tcp實現的rpc,開放式的系統接口,可自定義協議數據格式
4、抽象Event的事件處理與底層的事件監聽解耦,屏蔽不同協議之間的應用差異,大部分代碼實現共用
5、實現超全局變量,IOC,靜態延遲綁定,組件服務常駐內存化,trait的多路復用,鉤子事件,單例,工廠模式等
6、簡單易用的異步任務管理TaskManager, 定時器管理TickManager, 內存表管理TableManager, 進程管理ProcessManager,異常管理,超全局管理
7、靈活多層的配置,配置參數即可實現底層已封裝的復雜功能
8、應用對象的深度復制,實現對象的常駐內存,每個請求只需要從內存中復制應用對象,不需要再重新創建,減少IO消耗
9、封裝View,Log,Mysql,Redis,Mongodb,Swiftmail,Session等常用組件,其他組件根據業務按照約定即可封裝成組件
10、實現異步半阻塞與全異步非阻塞,EventHander與底層解耦
11、基于inotify實現自動監控swoole服務的文件變動,實現worker自動reload,智能郵件通知
12、命令行形式高度封裝啟動|停止控制的腳本,簡單命令即可管理整個框架

項目地址:https://github.com/bingcool/s...,歡迎issue

完善的文檔手冊

壓測

環境:1核2G內存的虛擬機,沒有任何調優,100并發,100000請求,壓測輸出hello world
ab -c 100 -n 100000 http://127.0.0.1:81/Index/index
壓測可以達到2600qps

應用場景

1、swoolefy建議用在單個或多個的服務中,例如異步郵件統發中心,搜索中心,日志上報中心,聊天系統,實時數據上報中心。比如用于實現了基于solr的產品搜索中心,店慶時交易系統實時訂單以及銷售數據看板
2、對于復雜的業務場景,不建議使用swoolefy,傳統的php-fpm是最好的選擇,當然,分拆服務解耦后,某些服務可以使用swoolefy來實現。

配置環境 安裝實際環境(建議)

1、支持php7.0+
2、搭建lnmp環境,建議使用lnmp一健安裝包,https://lnmp.org, 建議安裝lnmp1.4
3、安裝php必要的擴展,本框架需要的擴展包括swoole(1.9.17+), swoole_serialize(https://github.com/swoole/swo... inotify, pcntl, posix, zlib, mbstring,可以通過php-m查看是否安裝了這些擴展,如果通過lnmp1.4一健安裝包安裝的,已經默認安裝好這四個pcntl, posix, zlib, mbstring擴展的,只需要在安裝swoole和swoole_serialize, inotify即可,具體安裝過程參考官方文檔

docker容器已經配置好的php環境(開發測試)

為了方便開發和測試,我打包了一個基于alpine基礎鏡像搭建的php7.1環境容器bingcool/php2swoole:2.4,這個image已經非常小了,已經安裝所有的必須擴展,其中swoole是1.10.4版本,可以通過php --ri swoole 查看信息。
alpine的官網:https://pkgs.alpinelinux.org/...

</>復制代碼

  1. docker pull bingcool/php2swoole:2.4

已安裝的擴展如下:

</>復制代碼

  1. bz2
  2. Core
  3. curl
  4. date
  5. fileinfo
  6. filter
  7. ftp
  8. gd
  9. hash
  10. imagick
  11. inotify
  12. json
  13. libxml
  14. mbstring
  15. mcrypt
  16. memcached
  17. mongodb
  18. mysqlnd
  19. openssl
  20. pcntl
  21. pcre
  22. PDO
  23. pdo_mysql
  24. posix
  25. readline
  26. redis
  27. Reflection
  28. session
  29. SimpleXML
  30. soap
  31. sockets
  32. SPL
  33. standard
  34. swoole
  35. swoole_serialize
  36. xml
  37. xmlrpc
  38. Zend OPcache
  39. zip
  40. zlib
  41. [Zend Modules]
  42. Zend OPcache
開發部署

1、如果是自己安裝的php環境(需在linux環境下),最好先創建一個不能登錄偽用戶www,用來執行worker進程業務代碼

</>復制代碼

  1. useradd www -d /home/www -s /sbin/nologin

則在某一個web目錄,例如/home/www下

參考文檔

2、使用bingcool/php2swoole容器啟動php開發環境
下面是簡單使用,首先是啟動容器

</>復制代碼

  1. docker run -it -d --name dev -p 9502:9502 -v /home/www/:/home/www/ bingcool/php2swoole:2.4

-v /home/www/:/home/www/ 是將縮主機的/home/www目錄掛載到容器的/home/www

(1)然后進入容器

</>復制代碼

  1. docker exec -it dev /bin/sh

容器中已經安裝好composer和git等工具,然后利用composer方式來安裝部署一個項目,同樣參考
參考開發文檔

監控程序

1、啟動文件自動監控程序,進入項目目錄

</>復制代碼

  1. 當前終端啟動:php start.php start monitor
  2. 守護進程啟動:php start.php start monitor -d
  3. 停止:php start.php stop monitor

可以在配置文件swoolefy/protocol/monitor/config.php設置。監控程序自動監控php的文件變動,然后swoole的worker自動重啟,這個文件其實是通過調用代碼Shell文件夾的swoole_monitor.sh來監控9502端口(這個是swoole的http服務的默認端口),根據端口監聽,可以設置不同端口,監聽不同協議服務。
需要注意的是,由于在容器中/home/www的目錄是掛載與縮主機的,inotify是無法監聽到文件變動的,所以這個監控程序在容器環境中是無效的,每次修改代碼必須重啟

http服務

2、啟動swoole的http服務,進入進入項目目錄

</>復制代碼

  1. 啟動:php swoolefy start http
  2. 守護進程啟動:php swoolefy start http -d
  3. 停止:php swoolefy stop http

默認端口是9502,可以在配置文件protocol/http/config.php中更改,同時對應的protocol/monitor/config.php中對應更改端口,實現不同的自動重載。
注意文件權限問題

websocket服務

1、啟動swoole的websocket服務,進入swoolefy

</>復制代碼

  1. 啟動:php swoolefy start websocket
  2. 守護進程啟動:php swoolefy start websocket -d
  3. 停止:php swoolefy stop websocket

默認端口9503,可以在配置文件protocol/websocket/config.php中更改

rpc服務

1、啟動swoole的rpc服務,進入進入項目目錄

</>復制代碼

  1. 啟動:php swoolefy start rpc
  2. 守護進程啟動:php swoolefy start rpc -d
  3. 停止:php swoolefy stop rpc

默認端口9504,可以在配置文件protocol/rpc/config.php中更改。

udp服務

1、啟動swoole的rpc服務,進入進入項目目錄

</>復制代碼

  1. 啟動:php swoolefy start udp
  2. 守護進程啟動:php swoolefy start udp -d
  3. 停止:php swoolefy stop udp

默認端口9505,可以在配置文件protocol/udp/config.php中更改。

訪問Index

在App/Controller中就可以編碼測試,基本和thinkphp的mvc那樣操作。
比如在App/Controller/IndexController.php

</>復制代碼

  1. response->end("hello word!");
  2. }
  3. }

那么直接在瀏覽器輸入http://ip:9502/Index/index
若需要渲染模板

</>復制代碼

  1. assign("name","hello word!");
  2. $this->display("index.html");
  3. }

對應的路由規則:

</>復制代碼

  1. controller/action

如果存在module模塊:

</>復制代碼

  1. module/controller/action

具體的可以參考App/Controller/的demo

如果需要使用mysql,redis,mongodb這些組件功能,請安裝對應的擴展和服務,并在App/Config/config.php中配置。這個與Yii2的Component相似.

nginx代理

為了使用更好支持的HTTP協議,建議前端使用nginx作為代理,更多功能可以看proxy模塊來設置

</>復制代碼

  1. location / {
  2. proxy_http_version 1.1;
  3. proxy_set_header Connection "keep-alive";
  4. proxy_set_header X-Real-IP $remote_addr;
  5. proxy_pass http://127.0.0.1:9502;
  6. }

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

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

相關文章

  • 基于swooleswoolefy實現類似gowaitGroup多并發協程調度

    摘要:基于實用,抽象事件處理類,實現與底層的回調的解耦,支持協程調度,同步異步調用,全局事件注冊,心跳檢查,異步任務,多進程池等,內置等常用組件等。 swoolefy是一個基于swoole實現的輕量級高性能的常駐內存型的API和Web應用服務框架, 高度封裝了http,websocket,udp服務器,以及基于tcp實現可擴展的rpc服務, 同時支持composer包方式安裝部署項目。基于實...

    ZweiZhao 評論0 收藏0
  • Easyswoole 源碼學習個人解析 目錄

    摘要:易用穩定,本次想通過對的學習和個人解析,吸收框架的思想和設計知識,加強自己對的認知和理解。當然,筆者能力水平有限,后續的文章如有錯誤,還請指出和諒解。目錄如下后續添加文章都會記錄在此服務啟動過程以及主體設計流程源碼解析 前言 swoole是什么?官網的原話介紹是這樣的: Swoole 使用純 C 語言編寫,提供了 PHP 語言的異步多線程服務器,異步 TCP/UDP 網絡客戶端,異步 ...

    CoXie 評論0 收藏0
  • MixPHP:基于 Swoole 常駐內存 PHP 框架

    摘要:框架最新源代碼行數行,因此可以很容易的改造它,成為你們公司的專屬框架。也不同于其他基于的微服務框架,只聚焦于微服務治理,定位于開發的更多領域,覆蓋從初創到億元級體量的技術訴求。的授權全靠用戶自愿購買,詳情 MixPHP是什么 MixPHP 是秉承 普及 PHP 常駐內存型解決方案,促進 PHP 往更后端發展 的理念而創造,采用 Swoole 擴展作為底層引擎,圍繞常駐內存的方式而設計,...

    王晗 評論0 收藏0
  • 后端語言選淺談

    摘要:再往后來,也就是這種以事件循環常駐內存為特點的后端平臺,姑且能算是第四代后端平臺。 前不久回答了一個關于后端語言選型的問題,寫的回答也讓筆者有了很多感觸,因此在這里談論下自己對后端語言選型的心得體會,姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語言發展歷史 Web 后端語言的興起是從靜態網頁向動態網頁的發展所產生的,最早的動態頁面技術就是 CGI 技術,將客戶端的輸入交給 CGI...

    xcc3641 評論0 收藏0
  • 后端語言選淺談

    摘要:再往后來,也就是這種以事件循環常駐內存為特點的后端平臺,姑且能算是第四代后端平臺。 前不久回答了一個關于后端語言選型的問題,寫的回答也讓筆者有了很多感觸,因此在這里談論下自己對后端語言選型的心得體會,姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語言發展歷史 Web 后端語言的興起是從靜態網頁向動態網頁的發展所產生的,最早的動態頁面技術就是 CGI 技術,將客戶端的輸入交給 CGI...

    alighters 評論0 收藏0

發表評論

0條評論

lewinlee

|高級講師

TA的文章

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