easyswoole - 基于swoole扩展实现的一款高性能php框架

框架安裝

注意事項,請看完再進行安裝

  • 框架使用 Composer 作為依賴管理工具,在開始安裝框架前,請確保已經(jīng)按上一章節(jié)的要求配置好環(huán)境并安裝好了 Composer 工具
  • 關(guān)于 Composer 的安裝可以參照 Composer官網(wǎng)安裝教程Composer中國全量鏡像 的安裝教程
  • 目前推薦的鏡像為 Composer官網(wǎng)鏡像【可能需要梯子】或 騰訊云鏡像阿里云鏡像
  • 在安裝過程中,會提示用戶選擇是否釋放框架的 Index.phpRouter.php 文件到項目目錄(默認(rèn)不會釋放,也不會生成 App 目錄),請保證項目目錄有可寫入權(quán)限
  • 安裝完成之后,如果沒有自動生成 App 目錄,請自行根據(jù) Hello World 章節(jié) 章節(jié)進行配置
  • 部分機器(例如 Docker 環(huán)境)在使用框架時遇到類似 DNS Lookup resolve failed... 錯誤,請更換機器的 DNS 為阿里云公共 DNS 223.5.5.5223.6.6.6。具體更換步驟可查看 更換 DNS

框架更新說明(安裝之前必看)

很多小伙伴,在使用 Swoole 4.6.x 擴展時,在使用 EasySwoole 進行開發(fā)時(一般是在使用到 Swoole 協(xié)程時),遇到了類似如下錯誤:\[FATAL ERROR\]: all coroutines (count: 1) are asleep - deadlock!,這個錯誤屬于 Swoole 4.6.x 擴展的 debug 信息,詳細(xì)可查看 協(xié)程配置,如果不想看到這個信息,可在 bootstrap 事件(即項目根目錄的 bootstrap.php 文件)中最開始的位置,對協(xié)程的使用進行配置。配置示例代碼如下:

<?php
date_default_timezone_set('Asia/Shanghai');
// 關(guān)閉死鎖檢測相關(guān)堆棧信息輸出到日志
\Swoole\Coroutine::set(['enable_deadlock_check' => false]);

通過 Composer 安裝

切換 Composer 鏡像

# 推薦使用composer官方鏡像(如果使用此鏡像還是不行請自行更換其他源下載)
composer config -g repo.packagist composer https://repo.packagist.org

# 使用騰訊云 Composer 鏡像
composer config -g repo.packagist composer https://mirrors.tencent.com/composer/

# 使用阿里云 Composer 鏡像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

刪除鏡像

composer config -g --unset repos.packagist

Composer 安裝 EasySwoole 框架

按下面的步驟進行手動安裝

composer require easyswoole/easyswoole=3.7.x
php vendor/easyswoole/easyswoole/bin/easyswoole.php install

或者

composer require easyswoole/easyswoole=3.7.x
php vendor/bin/easyswoole.php install

Docker 下開發(fā)

如果您的本機環(huán)境并不能達到 EasySwoole 的運行環(huán)境要求,或?qū)τ诃h(huán)境配置不是那么熟悉,那么您可以通過以下方法來運行及開發(fā) EasySwoole 項目:

啟動容器

可以根據(jù)實際情況,映射到宿主機對應(yīng)的目錄,以下以 /wrokspace/easyswoole 為例。這個映射目錄您可以根據(jù)實際進行修改。

如果 docker 啟動時開啟了 selinux-enabled 選項,容器內(nèi)訪問宿主機資源就會受限,所以啟動容器時可以增加 --privileged -u root 選項

# MacOS/Linux
docker run --name easyswoole \
-v /workspace/easyswoole:/var/www \
-p 9501:9501 -it \
--privileged -u root \
--entrypoint /bin/sh \
easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13

# Windows
docker run --name easyswoole -v D:\workspace\easyswoole:/var/www -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13

EasySwoole 支持的 Docker 鏡像目前有如下:

  • easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13:環(huán)境為 php8.1.22 + swoole5.1.1 + easyswoole 3.7.x,構(gòu)建鏡像 Dockerfile查看
  • 更多請查看 easyswoole/docker

創(chuàng)建及安裝框架

cd /var/www
composer require easyswoole/easyswoole=3.7.x
php vendor/easyswoole/easyswoole/bin/easyswoole.php install

或者

cd /var/www
composer require easyswoole/easyswoole=3.7.x
php vendor/bin/easyswoole.php install

安裝成功

執(zhí)行安裝之后,安裝成功則會有如下界面:

首次安裝,會提示您是否選擇釋放(release) Index.phpRouter.phpApp 目錄到項目目錄,執(zhí)行界面如下:

php vendor/easyswoole/easyswoole/bin/easyswoole.php install
 ______                          _____                              _        
|  ____|                        / ____|                            | |       
| |__      __ _   ___   _   _  | (___   __      __   ___     ___   | |   ___ 
|  __|    / _` | / __| | | | |  \___ \  \ \ /\ / /  / _ \   / _ \  | |  / _ \
| |____  | (_| | \__ \ | |_| |  ____) |  \ V  V /  | (_) | | (_) | | | |  __/
|______|  \__,_| |___/  \__, | |_____/    \_/\_/    \___/   \___/  |_|  \___|
                         __/ |                                                
                        |___/
do you want to release Index.php? [ Y / N (default) ] : Y
do you want to release Router.php? [ Y / N (default) ] : Y
install success,enjoy!!!
dont forget run composer dump-autoload !!!

注意,上述輸入了 YY,表示選擇了 release(釋放) Index.phpRouter.phpApp 目錄在項目根目錄,默認(rèn) NN 是不釋放的,也不會自動生成 App 目錄和 App 命名空間。

新版安裝注意事項

  • 新版的 EasySwoole 安裝默認(rèn)不會提供 App 命名空間,還有 Index 控制器
  • 重復(fù)安裝時需要填寫 N,不需要覆蓋已經(jīng)有的 EasySwooleEvent.php、index.php、dev.php、produce.php 等文件
  • 當(dāng)提示 exec 函數(shù)被禁用時,請自己手動執(zhí)行 composer dump-autoload 命令更新命名空間
  • 當(dāng)提示 symlinkreadlink 函數(shù)被禁用時,請自行修改 php.ini 配置文件取消這些函數(shù)的禁用

重復(fù)安裝時,會提示您是否選擇 replace(覆蓋) 如下文件 Index.phpRouter.phpdev.phpproduce.phpbootstrap.phpEasySwooleEvent.php,你可以根據(jù)需要選擇是否覆蓋(replace),執(zhí)行界面如下:

php vendor/easyswoole/easyswoole/bin/easyswoole.php install
 ______                          _____                              _        
|  ____|                        / ____|                            | |       
| |__      __ _   ___   _   _  | (___   __      __   ___     ___   | |   ___ 
|  __|    / _` | / __| | | | |  \___ \  \ \ /\ / /  / _ \   / _ \  | |  / _ \
| |____  | (_| | \__ \ | |_| |  ____) |  \ V  V /  | (_) | | (_) | | | |  __/
|______|  \__,_| |___/  \__, | |_____/    \_/\_/    \___/   \___/  |_|  \___|
                         __/ |                                                
                        |___/                                                
Index.php has already existed, do you want to replace it? [ Y / N (default) ] : N
Router.php has already existed, do you want to replace it? [ Y / N (default) ] : N
dev.php has already existed, do you want to replace it? [ Y / N (default) ] : N
produce.php has already existed, do you want to replace it? [ Y / N (default) ] : N
bootstrap.php has already existed, do you want to replace it? [ Y / N (default) ] : N
EasySwooleEvent.php has already existed, do you want to replace it? [ Y / N (default) ] : N
install success,enjoy!!!
dont forget run composer dump-autoload !!!

如果您使用 Docker 方式進行安裝,您安裝成功之后就可以在宿主機 /var/www/ 中看到您安裝好的代碼了。 由于 EasySwoole 是持久化的 CLI 框架,當(dāng)您修改完您的代碼后,通過 CTRL + C 終止當(dāng)前啟動的進程實例,并重新執(zhí)行 php easyswoole.php server start 啟動命令即可。如果您想開啟后臺守護模式運行,用于部署,可查看 基礎(chǔ)管理命令

安裝報錯

當(dāng)執(zhí)行安裝腳本,出現(xiàn)類似以下錯誤時:

dir=$(cd "${0%[/\\]*}" > /dev/null; cd '../easyswoole/easyswoole/bin' && pwd)

if [ -d /proc/cygdrive ]; then
    case $(which php) in
        $(readlink -n /proc/cygdrive)/*)
            # We are in Cygwin using Windows php, so the path must be translated
            dir=$(cygpath -m "$dir");
            ;;
    esac
fi

"${dir}/easyswoole" "$@"

請檢查環(huán)境是否為寶塔等其他集成面板,或者是 php.ini 配置項中禁用了 symlinkreadlink 函數(shù),如果禁用了,請關(guān)閉這兩個函數(shù)的禁用,并刪除 vender 目錄,然后重新執(zhí)行 composer require 或者是 composer install 或者是 composer update

如果取消了函數(shù)禁用并且刪除 vendor 目錄,并重新執(zhí)行 composer install 之后。依舊出現(xiàn)以上錯誤時,大概率是因為虛擬機等權(quán)限原因?qū)е萝涙溄邮А?墒褂?php vendor/easyswoole/easyswoole/bin/easyswoole.php 命令進行啟動框架。或者直接修改項目根目錄的 easyswoole 文件,引入 vendor/easyswoole/easyswoole/bin/easyswoole.php

安裝 IDE 代碼提示組件

composer require easyswoole/swoole-ide-helper

啟動框架

中途沒有報錯的話,執(zhí)行:

# 啟動框架
cd /var/www
php easyswoole.php server start

此時可以訪問 http://localhost:9501 就看到框架的歡迎頁面,表示框架已經(jīng)安裝成功。

啟動框架失敗可能遇到的問題

  • not controller class match

    • composer.json 注冊 App 這個名稱空間了嗎?
    • 執(zhí)行過 composer dump-autoload 了嗎?
    • 存在 Index 控制器,但是文件大小寫、路徑都對了嗎?
  • task socket listen fail

    • 注意,在部分環(huán)境下,例如 win10docker 環(huán)境中,不可把虛擬機共享目錄作為 EasySwooleTemp 目錄,否則會因為權(quán)限不足無法創(chuàng)建 socket,產(chǎn)生報錯:listen xxxxxx.sock fail,為此可以手動在 dev.php 配置文件里把 Temp 目錄改為其他路徑即可,如:'/tmp'
  • 外網(wǎng)無法正常訪問

    • 注意:用戶如果外網(wǎng)無法正常訪問時,請檢查機器環(huán)境的防火墻/安全組是否開放 9501 或其他對應(yīng)端口。詳細(xì)解決方案請看 常見問題

其他

  • QQ 交流群

    • VIP 群 579434607 (本群需要付費599元)
    • EasySwoole 官方一群 633921431(已滿)
    • EasySwoole 官方二群 709134628(已滿)
    • EasySwoole 官方三群 932625047(已滿)
    • EasySwoole 官方四群 779897753(已滿)
    • EasySwoole 官方五群 853946743(已滿)
    • EasySwoole 官方六群 524475224(已滿)
    • EasySwoole 官方七群 1016674948
  • 商業(yè)支持:

    • QQ 291323003
    • EMAIL admin@fosuss.com
  • 作者微信

  • 捐贈 您的捐贈是對 EasySwoole 項目開發(fā)組最大的鼓勵和支持。我們會堅持開發(fā)維護下去。 您的捐贈將被用于:

    • 持續(xù)和深入地開發(fā)
    • 文檔和社區(qū)的建設(shè)和維護
主站蜘蛛池模板: 消防安装_消防安装施工_消防施工_北京消防安装公司-亿杰(北京)消防工程有限公司 | 西安汉信丨条码打印机,条码扫码枪,条码标签,条码仓库管理系统专业供应商 | 啤酒厂家_啤酒代工厂_原浆啤酒厂家 - 山东十谷啤酒有限公司 | 陶瓷复合钢管-专业提供江苏陶瓷钢管和陶瓷内衬复合钢管的生产厂家 | 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 - 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 | 上海上市答谢酒会_企业年会_新品上市发布会_周年/开业庆典_会议会务_活动策划布置演出公司 | 深圳诚暄软板首页-fpc软板,fpc软性线路板打样生产厂家 | 温州合发模架科技有限公司| 山东华德耐特工业设备有限公司-仓储货架-钢托盘-物流车-周转箱-工位器具 | 芜湖表面处理-涂装-精密加工-阳极氧化-芜湖研历光电科技有限公司 | 庭院大门,铝艺大门厂家,别墅庭院大门「免费设计」汉兰达庭院门厂家 | 苏州新闻网_苏州最权威资讯 | 山东礼品盒,礼品盒生产厂家,礼品包装盒厂家-济南恒印包装有限公司 | 济南海纳特科技有限公司| 智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒 | 上海画册设计-上海宣传册设计-产品手册设计-企业画册设计公司 | 搅拌设备_搅拌器_浓密机_浆式_顶入式_不锈钢「赛鼎机械」 | 履带吊出租_大型吊装设备_履带式起重机-山东腾飞吊装工程有限公司 | 深圳-广州-惠州-东莞-重型货架-悬臂-轻中型货架-深圳市诺普泰仓储设备有限公司 | 液位变送器_智能压力变送器_3051差压变送器_单双法兰,投入式,电容式,温度变送器-淮安润中仪表科技有限公司 | 青州东威机械有限公司,洗沙机,脱水筛、细沙回收机,淘金设备,洗石机,砂石分离机,筛沙机,采沙船,清淤船,破碎制砂机,海沙淡化设备 | 嘉兴中诚环保科技股份有限公司_PVC_润滑剂_抗氧剂_辅助热稳定剂 嘉兴市南湖斋食品股份有限公司_南湖斋 | 上海珑析仪表有限公司 | 咪咕体育直播,咪咕直播,CCTV5直播,体育直播,高清直播,腾讯体育直播,篮球直播,足球直播 | 上海视研装饰工程有限公司-上海标识公司,上海标识设计 | 铁氟龙膜/板/棒-铁氟龙网带/胶带/胶布-[东莞华氟]专注铁氟龙及特氟龙制品生产 | 郑州华特仪器设备有限公司-dlsb低温冷却液循环泵-SHZ-DIII循环水真空泵 | 气雾剂灌装机_二元喷雾灌装设备-武汉洁瑞仕 | 智能门锁管理-公寓管理软件-智能水电表管理系统-深圳安安智能 | 挖掘机|小型挖掘机|挖掘机抓木机|轮式挖掘机|宝鼎挖掘机-宝鼎液压机械公司厂家直销 | 三菱PLC,三菱变频器,三菱伺服,三菱电机--广州凌控 | 景德镇市奥群包装材料有限公司| 搅拌器「厂家直销」-淄博亿贝化工设备有限公司 | 全地形消防摩托车_背负式细水雾_全氟己酮灭火装置「斯库尔消防」 | 旋转补偿器-专注套筒三维球形补偿器定制生产厂家-伸缩接头价格_巩义市新华丰管道设备有限公司 | 浙江日新电气有限公司| 活性炭吸附设备,UV光氧废气处理设备,破碎机专用除尘器,催化燃烧设备厂家-河北碧清环保设备有限公司 | 企业微信注册_CRM客户管理系统_SCRM解决方案_私域流量运营_腾讯企点服务_企业QQ-腾辉网络 | 内蒙古发电机厂家_呼和浩特发电机租赁_销售_维修_回收_置换|盈弘发电设备有限责任公司 | 矿用精确定位系统,井下4G无线通讯系统,工作面集控系统,皮带保护系统-山东新云鹏电气有限公司 | 青州市同兴源包装机械有限公司-青州市同兴源包装机械有限公司 |