## 簡介
`Swoole-Cli`?是一個 PHP 的二進制發行版,集成了?`swoole`、`php 內核`、`php-cli`、`php-fpm?`以及多個常用擴展。`Swoole-Cli`?是全部靜態編譯打包的,不依賴任何操作系統的?`so?`動態鏈接庫,具備非常好的移植性,可以在任意?`Linux`?系統之間復制,下載即可使用。
作為 PHP 開發者都應該知道 PHP 有兩種運行模式:`php-fpm`和`php-cli`。那么在 Swoole 5.0 中將迎來一種新的運行模式:`swoole-cli`。
> Swoole將像`node.js`這樣作為獨立程序提供給用戶,而不是作為PHP的一個擴展。
除此之外`swoole-cli`會盡可能地對`php-src`進行裁剪,移除一些不用的機制、模塊、擴展、函數、類型、常量、代碼,使得整個程序可以在幾分鐘之內編譯完成。
## 操作系統支持
`Swoole-Cli`?會提供?`Linux`、`macOS`、`Windows(Cygwin)`?3種操作系統的二進制包的支持。
## 安裝
### 下載
Linux 系統
~~~
wget?https://github.com/swoole/swoole-cli/releases/download/v5.1.3.0/swoole-cli-v5.1.3-linux-x64.tar.xz
~~~
Windows 系統
~~~
https://github.com/swoole/swoole-cli/releases/download/v5.1.3.0/swoole-cli-v5.1.3-cygwin-x64.zip
~~~
### 配置環境
~~~
tar?-xf?swoole-cli-v5.1.3-linux-x64.tar.xz
chmod?u+x?swoole-cli
sudo?mv?swoole-cli?/usr/bin/swoole-cli
~~~
查看版本號`swoole-cli -v`
~~~
swoole-cli?-v
Swoole?5.1.3?(cli)?(built:?Jun??7?2024?07:19:27)?(NTS)
~~~
查看已安裝擴展`swoole-cli -m`
~~~
swoole-cli?-m
[PHP?Modules]
apcu
bcmath
bz2
Core
ctype
curl
date
dom
ds
exif
fileinfo
filter
gd
gmp
hash
iconv
imagick
inotify
intl
json
libxml
mbstring
mongodb
mysqli
mysqlnd
opcache
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sockets
sodium
SPL
sqlite3
ssh2
standard
swoole
tokenizer
xlswriter
xml
xmlreader
xmlwriter
xsl
yaml
Zend?OPcache
zip
zlib
[Zend?Modules]
Zend?OPcache
~~~
### 配置文件
`swoole-cli`?默認不加載任何?`php.ini`?配置文件。可通過?`-d`?參數來設置?`PHP`?選項或使用?`-c`?參數指定加載的`php.ini`配置文件。
~~~
swoole-cli?-d?swoole.use_shortname=off?bin/hyperf.php?start
swoole-cli?-c?/tmp/php.ini?-v
~~~
### 啟動 PHP-FPM
`swoole-cli`?集成了?`PHP-FPM`?,可使用?`-P`?命令來啟動?`fpm`?。
~~~
#?查看幫助文件
swoole-cli?-P?-h
#?運行?FPM
swoole-cli?-P?--fpm-config?/opt/php-8.1/etc/php-fpm.conf?-p?/opt/php-8.1/var
#?關閉守護進程
swoole-cli?-P?--fpm-config?/opt/php-8.1/etc/php-fpm.conf?-p?/opt/php-8.1/var?-F
#?使用?root?賬戶啟動
swoole-cli?-P?--fpm-config?/opt/php-8.1/etc/php-fpm.conf?-p?/opt/php-8.1/var?-F?-R
~~~
### 啟動 Swoole Server
`server.php`文件
~~~
<?php
$http?=?new?Swoole\Http\Server('127.0.0.1',?9501);
$http->on('start',?function?($server)?{
????echo?"Swoole?http?server?is?started?at?http://127.0.0.1:9501\n";
});
$http->on('request',?function?($request,?$response)?{
????$response->header('Content-Type',?'text/plain');
????$response->end('Hello 開源技術小棧!');
});
$http->start();
~~~
通過`swoole-cli`啟動
~~~
swoole-cli?server.php?
Swoole?http?server?is?started?at?http://127.0.0.1:9501
~~~
通過`curl`訪問
~~~
curl?http://127.0.0.1:9501
Hello 開源技術小棧!
~~~
### 啟動 webman
~~~
cd?webman.tinywan.com
swoole-cli?start.php?start
Workerman[start.php]?start?in?DEBUG?mode
--------------------------------------------?WORKERMAN?--------------------------------------------
Workerman?version:4.1.15??????????PHP?version:8.1.27???????????Event-Loop:\Workerman\Events\Select
---------------------------------------------?WORKERS?---------------------------------------------
proto???user????????????worker??????????listen?????????????????processes????status???????????
tcp?????www?????????????webman??????????http://0.0.0.0:8787????8?????????????[OK]????????????
tcp?????www?????????????monitor?????????none???????????????????1?????????????[OK]????????????
---------------------------------------------------------------------------------------------------
Press?Ctrl+C?to?stop.?Start?success.
~~~
- 設計模式系列
- 工廠方法模式
- 序言
- Windows程序注冊為服務的工具WinSW
- 基礎
- 安裝
- 開發規范
- 目錄結構
- 配置
- 快速入門
- 架構
- 請求流程
- 架構總覽
- URL訪問
- 容器和依賴注入
- 中間件
- 事件
- 代碼層結構
- 四個層次
- 路由
- 控制器
- 請求
- 響應
- 數據庫
- MySQL實時同步數據到ES解決方案
- 阿里云DTS數據MySQL同步至Elasticsearch實戰
- PHP中的MySQL連接池
- PHP異步非阻塞MySQL客戶端連接池
- 模型
- 視圖
- 注解
- @SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})
- @EnableFeignClients(basePackages = "com.wotu.feign")
- @EnableAspectJAutoProxy
- @EnableDiscoveryClient
- 錯誤和日志
- 異常處理
- 日志處理
- 調試
- 驗證
- 驗證器
- 驗證規則
- 擴展庫
- 附錄
- Spring框架知識體系詳解
- Maven
- Maven和Composer
- 構建Maven項目
- 實操課程
- 01.初識SpringBoot
- 第1章 Java Web發展史與學習Java的方法
- 第2章 環境與常見問題踩坑
- 第3章 springboot的路由與控制器
- 02.Java編程思想深度理論知識
- 第1章 Java編程思想總體
- 第2章 英雄聯盟的小案例理解Java中最為抽象的概念
- 第3章 徹底理解IOC、DI與DIP
- 03.Spring與SpringBoot理論篇
- 第1章 Spring與SpringBoot導學
- 第2章 Spring IOC的核心機制:實例化與注入
- 第3章 SpringBoot基本配置原理
- 04.SprinBoot的條件注解與配置
- 第1章 conditonal 條件注解
- 第2章 SpringBoot自動裝配解析
- 05.Java異常深度剖析
- 第1章 Java異常分類剖析與自定義異常
- 第2章 自動配置Url前綴
- 06.參數校驗機制與LomBok工具集的使用
- 第1章 LomBok工具集的使用
- 第2章 參數校驗機制以及自定義校驗
- 07.項目分層設計與JPA技術
- 第1章 項目分層原則與層與層的松耦合原則
- 第2章 數據庫設計、實體關系與查詢方案探討
- 第3章 JPA的關聯關系與規則查詢
- 08.ORM的概念與思維
- 第1章 ORM的概念與思維
- 第2章 Banner等相關業務
- 第3章 再談數據庫設計技巧與VO層對象的技巧
- 09.JPA的多種查詢規則
- 第1章 DozerBeanMapper的使用
- 第2章 詳解SKU的規格設計
- 第3章 通用泛型Converter
- 10.令牌與權限
- 第1章 通用泛型類與java泛型的思考
- 常見問題
- 微服務
- demo
- PHP中Self、Static和parent的區別
- Swoole-Cli
- 為什么要使用現代化PHP框架?
- 公眾號
- 一鍵部署微信公眾號Markdown編輯器(支持適配和主題設計)
- Autodesigner 2.0發布
- Luya 一個現代化PHP開發框架
- PHPZip - 創建、讀取和管理 ZIP 文件的簡單庫
- 吊打Golang的PHP界天花板webman壓測對比
- 簡潔而強大的 YAML 解析庫
- 推薦一個革命性的PHP測試框架:Kahlan
- ServBay下一代Web開發環境
- 基于Websocket和Canvas實現多人協作實時共享白板
- Apipost預執行腳本如何調用外部PHP語言
- 認證和授權的安全令牌 Bearer Token
- Laradock PHP 的 Docker 完整本地開發環境
- 高效接口防抖策略,確保數據安全,避免重復提交的終極解決方案!
- TIOBE 6月榜單:PHP穩步前行,編程語言生態的微妙變化
- Aho-Corasick字符串匹配算法的實現
- Redis鍵空間通知 Keyspace Notification 事件訂閱
- ServBay如何啟用并運行Webman項目
- 使用mpdf實現導出pdf文件功能
- Medoo 輕量級PHP數據庫框架
- 在PHP中編寫和運行單元測試
- 9 PHP運行時基準性能測試
- QR碼生成器在PHP中的源代碼
- 使用Gogs極易搭建的自助Git服務
- Gitea
- webman如何記錄SQL到日志?
- Sentry PHP: 實時監測并處理PHP應用程序中的錯誤
- Swoole v6 Alpha 版本已發布
- Proxypin
- Rust實現的Redis內存數據庫發布
- PHP 8.4.0 Alpha 1 測試版本發布
- 121
- Golang + Vue 開發的開源輕量 Linux 服務器運維管理面板
- 內網穿透 FRP VS Tailscale
- 新一代開源代碼托管平臺Gitea
- 微服務系列
- Nacos云原生配置中心介紹與使用
- 輕量級的開源高性能事件庫libevent
- 國密算法
- 國密算法(商用密碼)
- GmSSL 支持國密SM2/SM3/SM4/SM9/SSL 密碼工具箱
- GmSSL PHP 使用
- 數據庫
- SQLite數據庫的Web管理工具
- 阿里巴巴MySQL數據庫強制規范
- PHP
- PHP安全測試秘密武器 PHPGGC
- 使用declare(strict_types=1)來獲得更健壯的PHP代碼
- PHP中的魔術常量
- OSS 直傳阿里騰訊示例
- PHP源碼編譯安裝APCu擴展實現數據緩存
- BI性能DuckDB數據管理系統
- 為什么別人可以是架構師!而我卻不是?
- 密碼還在用 MD5 加鹽?不如試試 password_hash
- Elasticsearch 在電商領域的應用與實踐
- Cron 定時任務入門
- 如何動態設置定時任務!而不是寫死在Linux Crontab
- Elasticsearch的四種查詢方式,你知道多少?
- Meilisearch vs Elasticsearch
- OpenSearch vs Elasticsearch
- Emlog 輕量級開源博客及建站系統
- 現代化PHP原生協程引擎 PRipple
- 使用Zephir編寫C擴展將PHP源代碼編譯加密
- 如何將PHP源代碼編譯加密,同時保證代碼能正常的運行
- 為什么選擇Zephir給PHP編寫動態擴展庫?
- 使用 PHP + XlsWriter實現百萬級數據導入導出
- Rust編寫PHP擴展
- 阿里云盤開放平臺對接進行文件同步
- 如何構建自己的PHP靜態可執行文件
- IM后端架構
- RESTful設計方法和規范
- PHP編譯器BPC 7.3 發布,成功編譯ThinkPHP8
- 高性能的配置管理擴展 Yaconf
- PHP實現雪花算法庫 Snowflake
- PHP官方現代化核心加密庫Sodium
- pie
- 現代化、精簡、非阻塞PHP標準庫PSL
- PHP泛型和集合
- 手把手教你正確使用 Composer包管理
- JWT雙令牌認證實現無感Token自動續期
- 最先進PHP大模型深度學習庫TransformersPHP
- PHP如何啟用 FFI 擴展
- PHP超集語言PXP
- 低延遲雙向實時事件通信 Socket.IO
- PHP OOP中的繼承和多態
- 強大的現代PHP高級調試工具Kint
- PHP基金會
- 基于webman+vue3高質量中后臺框架SaiAdmin
- 開源免費的定時任務管理系統:Gocron
- 簡單強大OCR工具EasyOCR在PHP中使用
- PHP代碼抽象語法樹工具PHP AST Viewer
- MySQL數據庫管理工具PHPMyAdmin
- Rust編寫的一款高性能多人代碼編輯器Zed
- 超高性能PHP框架Workerman v5.0.0-beta.8 發布
- 高并發系列
- 入門介紹及安裝
- Lua腳本開發 Hello World
- 執行流程與階段詳解
- Nginx Lua API 接口開發
- Lua模塊開發
- OpenResty 高性能的正式原因
- 記一次查找 lua-resty-mysql 庫 insert_id 的 bug
- 包管理工具OPM和LuaRocks使用
- 異步非阻塞HTTP客戶端庫 lua-resty-http
- Nginx 內置綁定變量
- Redis協程網絡庫 lua-resty-redis
- 動態HTML渲染庫 lua-testy-template
- 單獨的
- StackBlitz在線開發環境
- AI
- 基礎概念
- 12312
- 基礎鏡像的坑
- 利用phpy實現 PHP 編寫 Vision Transformer (ViT) 模型
- 語義化版本 2.0.0