php mvc 高性能框架,swoolefy-基于swoole擴展實現的高性能的微服務和mvc框架

swoolefy

這是一個基于swoole擴展實現的輕量級高性能的API和Web的MVC微服務框架,參考了TP,Yii2,Workerman,swoole_framework等框架的的設計思想。同時也結合了多年來的技術的積累的以及生產環境中的實踐經驗

實現的功能特性

1、輕量級的框架,實現路由與調度,MVC三層,當然也可以配置多層

2、支持composer和自定義注冊命名空間

3、支持多協議,目前支持http,websocket

3、利用swoole的原生異步進程封裝成應用服務,更有好的任務投放

4、實現超全局變量,IOC(控制反轉),靜態延遲綁定,組件服務常駐內存化,trait的多路復用

5、簡單易用的定時任務,以及table內存表,自定義錯誤捕捉

6、靈活多層的配置,配置參數即可實現底層已封裝的復雜功能

7、應用對象的深度復制,實現對象的常駐內存,每個請求只需要從內存中復制應用對象,不需要再重新創建,減少IO消耗,保持內存穩定

8、封裝View,Log,Mysql,Redis,Mongodb,Swiftmail郵件等常用組件,其他組件根據業務按照約定即可封裝成組件

9、支持udp,tcp,http多種方式接入graylog

10、基于inotify實現自動監測swoole服務的文件變動,實現自動重載,檢測,智能郵件通知的服務

11、封裝啟動停止控制的腳本,簡單命令即可管理整個框架,使用文檔手冊將在后期整理

配置環境

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即可,具體安裝過程參考官方文檔

下載框架和安裝

在某一個web目錄下

(1)git clone https://github.com/bingcool/s...

(2)composer install(需要安裝composer)

啟動

1、啟動文件自動監控程序,進入swoolefy/score/AutoReload

php start.php -d

監控程序自動監控php的文件變動,然后swoole的worker自動重啟,這個文件其實是通過調用代碼Shell文件夾的swoole_monitor.sh來監控9502端口(這個是swoole的http服務的默認端口)

2、啟動swoole的http服務,進入swoole/score/Http

啟動:php start.php start http

停止:php start.php stop http

默認端口是9502,當然可以在配置文件中更改,同時對應的swoolefy/score/AutoReload下的daemon.php中對應更改。注意文件權限問題

訪問test

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

比如在App/Controller/TestController.php

那么直接在瀏覽器輸入http://ip:9502/Test/test, 對應的路由規則domain/controller/action

具體的可以參考App/Controller/的例子

如果需要使用mysql,redis,mongodb這些組件功能,請安裝mysql,redis,mongodb并在App/Config/config.php中配置,具體的配置可以參考配置文件。這個與Yii2的Component相似.

框架已在github開源:https://github.com/bingcool/s...,有需要的同學可以嘗試,也歡迎issue

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393222.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393222.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

arcore_如何使用ARCore和Android Studio構建增強現實Android應用

arcoreby Ayusch Jain通過Ayusch Jain 如何使用ARCore和Android Studio構建增強現實Android應用 (How to build an Augmented Reality Android App with ARCore and Android Studio) This article was originally posted here本文最初發布在這里 In the previous post, I expl…

最小值的最優化問題

無約束極小值的最優化條件: 關于多元函數極小值點的必要條件: 滿足的點稱之為f(x)的駐點或穩定點,但是反過來,滿足梯度條件的點不一定是f(x)的局部極小值。因此,定理轉化為求解下面的方程組問題: 對于上面…

leetcode950. 按遞增順序顯示卡牌

牌組中的每張卡牌都對應有一個唯一的整數。你可以按你想要的順序對這套卡片進行排序。 最初,這些卡牌在牌組里是正面朝下的(即,未顯示狀態)。 現在,重復執行以下步驟,直到顯示所有卡牌為止: …

第2課 - 搭建Lua開發環境

第2課 - 搭建Lua開發環境 1. Lua 的優點 (1)Lua 使用標準的 ANSI C 進行開發,可以無縫集成到宿主程序,且幾乎支持所有平臺。 (2)Lua 是開源且免費的軟件,以源碼的方式直接發布。開源軟件的發布方…

關于文件系統權限的管理

關于文件系統權限的管理 眾所周知的是,一個操作系統,是需要為不同的用戶進行服務的,因為不能讓每個人都以管理員進行操作,這樣做的話,毫無安全性可言,所以我們需要驗證和授權。這就體現了權限的重要性&…

深度學習工作開展_深入開展深度工作:新經濟中的兩項核心能力

深度學習工作開展by Bar Franek由Bar Franek 深入開展深度工作:新經濟中的兩項核心能力 (Going Deeper on Deep Work: Two Core Abilities for Thriving in the New Economy) 愛深層工作的更多理由 (A Few More Reasons To Love Deep Work) I had no idea my first…

java獲取文件名方法,利用Java獲取文件名、類名、方法名和行號的方法小結

大家都知道,在C語言中,我們可以通過宏FILE、 __LINE__來獲取文件名和行號,而在Java語言中,則可以通過StackTraceElement類來獲取文件名、類名、方法名、行號,具體代碼如下:public static int getLineNumber…

tp5.1升級指導---控制器調整 _initialize方法更改為initialize

控制器調整 為了規范化,繼承了think\Controller類的話,初始化方法從原來的_initialize方法更改為initialize。轉載于:https://www.cnblogs.com/lsyy/p/11027416.html

leetcode537. 復數乘法

給定兩個表示復數的字符串。 返回表示它們乘積的字符串。注意,根據定義 i2 -1 。 示例 1: 輸入: “11i”, “11i” 輸出: “02i” 解釋: (1 i) * (1 i) 1 i2 2 * i 2i ,你需要將它轉換為 02i 的形式。 代碼 class Solution {public String c…

初始多態

package Li;public class Person { String name;public Person() {super(); }public Person(String name) {super();this.name name; }public void eat(){System.out.println(name"正在吃面包"); } }package Li;public class Student extends Person {public Studen…

Bitmap尺度變換

1 Bitmap bitMap BitmapFactory.decodeFile(path);2 int width bitMap.getWidth();3 int height bitMap.getHeight();4 // 設置想要的大小5 int newWidth 500;6 int newHeight 400;7 // 計算縮放比例8 float scaleWidth ((float) newWidth) / width;9 float scaleHeight …

css!important_如何解決CSS特殊性問題以及何時使用!important關鍵字

css!importantby Muna Mohamed通過穆納穆罕默德(Muna Mohamed) 如何解決CSS特殊性問題以及何時使用!important關鍵字 (How to tackle CSS specificity issues and when to use the !important keyword) 案例研究 (A Case Study) Recently, there was a Twitter pol…

php框架使用教程,php框架laravel excel包使用教程介紹

Laravel是一套簡潔、優雅的PHP Web開發框架(PHP Web Framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP了,下面我們來看看laravel excel包使用教程laravel中excel插件的安裝在composer中引入laravel excel的包&quo…

(私人收藏)python學習(游戲、爬蟲、排序、練習題、錯誤總結)

python學習(游戲、爬蟲、排序、練習題、錯誤總結) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSgl7bz python100經典練習題python-錯誤和異常小結python-大作業之五子棋游戲(附代碼)python-網絡爬蟲幾種排序方法python實現新手常見的python運行時錯誤…

leetcode1300. 轉變數組后最接近目標值的數組和

給你一個整數數組 arr 和一個目標值 target ,請你返回一個整數 value ,使得將數組中所有大于 value 的值變成 value 后,數組的和最接近 target (最接近表示兩者之差的絕對值最小)。 如果有多種使得和最接近 target 的…

MySQL性能指標及計算方法

MySQL性能指標及計算方法 絕大多數MySQL性能指標可以通過以下兩種方式獲取: (1)mysqladmin 使用mysqladmin extended-status命令獲得的MySQL的性能指標,默認為累計值。如果想了解當前狀態,需要進行差值計算&#xff1b…

php可變變量講解,PHP可變變量實例詳解

什么是可變變量?在PHP中有一個其他類型的變量,“可變變量”。可變變量是一種PHP獨特的變量,他允許動態改變一個變量的名稱。可變變量的工作原理這個特性的工作原理是用一個變量的值作為另一個變量的名稱。例如,我們可以設置$str的…

Nginx平滑升級到最新版本

(一)簡述: 早上收到nginx最新漏洞的通知,Nginx官方發布最新的安全公告,在Nginx范圍過濾器中發現了一個安全問題(CVE-2017-7529),通過精心構造的惡意請求可能會導致整數溢出并且不…

如何使用TypeScript從Microsoft Word生成GitHub markdown文件

by Manish Bansal通過Manish Bansal What? Why would one want to generate an MD file from a Microsoft word document? If that’s the first thought you had after reading this title, then let me give you a strong use case.什么? 為什么要從Microsoft …

Android Studio 導入 Android 系統模塊并編譯和調試

FAQ: AS導入系統模塊源碼,并且能夠編譯調試,正常查看java doc ???? Android AOSP基礎(五)Android Studio調試系統源碼的三種方式http://liuwangshu.cn/framework/aosp/5-debug-aosp.html Android AOSP基礎(四&…