php安裝swoole擴展

PHP安裝swoole擴展

  • Swoole官網

安裝準備

安裝前必須保證系統已經安裝了下列軟件

  • 4.8 版本需要 PHP-7.2 或更高版本
  • 5.0 版本需要 PHP-8.0 或更高版本
  • 6.0 版本需要 PHP-8.1 或更高版本
  • gcc-4.8 或更高版本
  • make
  • autoconf

安裝Swool擴展

  • 安裝官方文檔
  • 安裝后需要再php.ini中增加擴展配置
extension="swoole.so"

推薦啟用的 PHP 配置

在 php.ini 中添加或修改以下配置以優化 Swoole:

; 錯誤顯示(開發環境建議啟用)
display_errors = On
display_startup_errors = On
error_reporting = E_ALL; 內存和時間限制(根據需求調整)
memory_limit = 1G       ; Swoole 常駐內存,建議調高
max_execution_time = 0  ; 腳本不超時(由 Swoole 控制); 禁用函數安全限制(Swoole 需要)
disable_functions = ""  ; 確保不禁用 exec、shell_exec 等(如需進程管理); 啟用 OPcache(提升性能)
opcache.enable = 1
opcache.enable_cli = 1  ; CLI 模式下也啟用

編譯選項

這里是./configure 編譯配置的額外參數,用于開啟某些特性

編譯安裝配置
./configure \--enable-openssl=yes \--enable-sockets=yes \      # 建議啟用--enable-mysqlnd=yes \     # 建議啟用--enable-curl=yes \        # 建議啟用--enable-cares=yes \       # 建議啟用--enable-brotli=yes \--enable-zstd=no \--enable-pgsql=no \--enable-odbc=no \--enable-oracle=no \--enable-sqlite=no \--enable-thread=no \--enable-ioring=no
安裝依賴命令
# Ubuntu/Debian
sudo apt-get install -y \libssl-dev \libcurl4-openssl-dev \libc-ares-dev \libbrotli-dev \libpq-dev  # 如需 PostgreSQL# CentOS/RHEL
sudo yum install -y \openssl-devel \libcurl-devel \c-ares-devel \brotli-devel \postgresql-devel  # 如需 PostgreSQL
配置選項速查表
配置選項默認值作用說明推薦建議依賴庫
enable sockets supportno啟用 PHP 原生 sockets 協程化支持(底層 TCP/UDP 開發)? 選 no:僅用高級協議(HTTP/WebSocket)
? 選 yes:需自定義協議
-
enable openssl supportno啟用 SSL/TLS 加密(HTTPS/WSS 必備)? 必選 yeslibssl-devopenssl-devel
enable mysqlnd supportno啟用 MySQL 協程客戶端(高性能非阻塞操作)? 選 no:無 MySQL 需求
? 推薦 yes:高并發 MySQL 場景
mysqlnd
enable curl supportno啟用協程 cURL(替代原生阻塞式 curl)? 選 no:無需高性能 HTTP 客戶端
? 推薦 yes:爬蟲/微服務調用
libcurl-dev
enable cares supportno啟用異步 DNS 解析(避免阻塞協程)? 選 no:直接使用 IP
? 推薦 yes:高并發 HTTP 客戶端
libc-ares-dev
enable brotli supportyes啟用 Brotli 壓縮(比 Gzip 更高壓縮率)? 推薦保持 yeslibbrotli-dev
enable zstd supportno啟用 Zstandard 壓縮(速度優于 Brotli)? 選 no:Brotli 已足夠
? 選 yes:需極致壓縮性能
libzstd-dev
enable PostgreSQL supportno啟用 PostgreSQL 協程客戶端? 保持 no:除非明確需要libpq-dev
enable ODBC supportno啟用 ODBC 協程客戶端(SQL Server/Oracle 等)? 保持 nounixodbc-dev
enable Oracle supportno啟用 Oracle 協程客戶端(需 OCI8)? 保持 noOracle Instant Client
enable Sqlite supportno啟用 SQLite 協程客戶端? 保持 nosqlite3-dev
enable thread supportno啟用多線程模式(需 PHP ZTS 版本)? 保持 no:協程模式足夠-
enable iouring supportno啟用 Linux io_uring 異步 I/O(需內核 ≥5.1)? 選 no:非高版本內核
? 選 yes:需極致文件性能
liburing-dev
Swoole 編譯附加選項說明
配置選項說明
配置選項默認值作用說明適用場景依賴/注意事項
–enable-http2no啟用 HTTP/2 協議支持需高性能 HTTP/2 服務(如 gRPC)需 OpenSSL ≥1.0.2
–enable-swoole-jsonno啟用 Swoole 內置 JSON 編解碼優化高頻 JSON 操作場景(替代 json_encode/json_decode)需 PHP ≥7.2
–enable-swoole-pgsqlno啟用 PostgreSQL 協程客戶端(舊版配置,推薦用 --enable-pgsql)同 --enable-pgsql需 libpq-dev
–enable-debug-logno啟用調試日志(記錄更詳細的運行時信息)開發環境問題排查影響性能,生產環境禁用
–enable-trace-logno啟用追蹤日志(記錄協程切換等底層事件)深度性能調優或 Swoole 內部機制研究日志量極大,僅調試使用
–enable-swoole-hookall啟用系統調用鉤子(將阻塞函數轉為協程式)需協程化原生函數(如 sleep/file_get_contents)可能引發兼容性問題,需測試
–enable-swoole-global-hookno全局啟用協程鉤子(覆蓋所有 PHP 代碼)全項目無侵入式協程化風險高,謹慎使用
–with-jemallocno鏈接 jemalloc 內存分配器(替代 glibc 的 malloc)高并發場景減少內存碎片需安裝 jemalloc 開發庫
–with-libpq-dir-指定 PostgreSQL 庫路徑(非標準安裝時使用)自定義 PostgreSQL 安裝路徑示例:–with-libpq-dir=/opt/pgsql
–with-openssl-dir-指定 OpenSSL 庫路徑(非標準安裝時使用)自定義 OpenSSL 安裝路徑示例:–with-openssl-dir=/opt/openssl
功能模塊選項
配置選項默認值作用說明依賴項
–enable-swoole-redisyes啟用 Redis 協程客戶端(需單獨安裝 swoole_redis 擴展)-
–enable-swoole-sqliteno啟用 SQLite 協程客戶端sqlite3-dev
–enable-swoole-curlno啟用協程 cURL 客戶端(替代原生 curl)libcurl-dev
–enable-swoole-zipno啟用 Zip 壓縮解壓協程支持libzip-dev

編譯安裝

下載 swoole 源碼

https://github.com/swoole/swoole-src/releases
https://pecl.php.net/package/swoole
https://gitee.com/swoole/swoole/tags

從源碼編譯安裝

下載源代碼包后,在終端進入源碼目錄,執行下面的命令進行編譯和安裝

ubuntu 沒有安裝 phpize 可執行命令:sudo apt-get install php-dev 來安裝 phpize

快速安裝(官方示例)
cd swoole-src && \
phpize && \
./configure && \
sudo make && sudo make install
進階完整編譯(官方示例)

以下腳本會下載并編譯 master 分支的源碼,需保證你已安裝所有依賴,否則會遇到各種依賴錯誤。

mkdir -p ~/build && \
cd ~/build && \
rm -rf ./swoole-src && \
curl -o ./tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/master.tar.gz -L && \
tar zxvf ./tmp/swoole.tar.gz && \
mv swoole-src* swoole-src && \
cd swoole-src && \
phpize && \
./configure \
--enable-openssl --enable-sockets --enable-mysqlnd --enable-swoole-curl --enable-cares --enable-swoole-pgsql && \
sudo make && sudo make install

PECL安裝(推薦,根據提示安裝簡單)

Swoole 項目已收錄到 PHP 官方擴展庫,除了手動下載編譯外,還可以通過 PHP 官方提供的 pecl 命令,一鍵下載安裝

使用系統默認php版本安裝

pecl install swoole

指定php版本安裝(如果存在多個php版本)

# 進入指定的php版本/bin目錄中
/usr/local/php8.2/bin/php install swoole

官方文檔的安裝方式

通過 PECL 安裝 Swoole 時,在安裝過程中它會詢問是否要啟用某些功能,這也可以在運行安裝之前提供,例如:

pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' swoole#或者
pecl install --configureoptions 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' swoole

在這里插入圖片描述

驗證安裝:

編譯完成后執行 php --ri swoole 檢查已啟用功能。

php --ri swoole

在這里插入圖片描述

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

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

相關文章

服務器傳輸數據存儲數據建議 傳輸慢的原因

一、JSON存儲的局限性 1. 性能瓶頸 全量讀寫:JSON文件通常需要整體加載到內存中才能操作,當數據量大時(如幾百MB),I/O延遲和內存占用會顯著增加。 無索引機制:查找數據需要遍歷所有條目(時間復…

Android四大核心組件

目錄 一、為什么需要四大組件? 二、Activity:看得見的界面 核心功能 生命周期圖解 代碼示例 三、Service:看不見的勞動者 兩大類型 生命周期對比 注意陷阱 四、BroadcastReceiver:消息傳遞專員 兩種注冊方式 廣播類型 …

「Mac暢玩AIGC與多模態01」架構篇01 - 展示層到硬件層的架構總覽

一、概述 AIGC(AI Generated Content)系統由多個結構層級組成,自上而下涵蓋交互界面、API 通信、模型推理、計算框架、底層驅動與硬件支持。本篇梳理 AIGC 應用的六層體系結構,明確各組件在系統中的職責與上下游關系,…

[MERN 項目實戰] MERN Multi-Vendor 電商平臺開發筆記(v2.0 從 bug 到結構優化的工程記錄)

[MERN 項目實戰] MERN Multi-Vendor 電商平臺開發筆記(v2.0 從 bug 到結構優化的工程記錄) 其實之前沒想著這么快就能把 2.0 的筆記寫出來的,之前的預期是,下一個階段會一直維持到將 MERN 項目寫完,畢竟后期很多東西都…

互斥量函數組

頭文件 #include <pthread.h> pthread_mutex_init 函數原型&#xff1a; int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); 函數參數&#xff1a; mutex&#xff1a;指向要初始化的互斥量的指針。 attr&#xf…

互聯網的下一代脈搏:深入理解 QUIC 協議

互聯網的下一代脈搏&#xff1a;深入理解 QUIC 協議 互聯網是現代社會的基石&#xff0c;而數據在其中高效、安全地傳輸是其運轉的關鍵。長期以來&#xff0c;傳輸層的 TCP&#xff08;傳輸控制協議&#xff09;一直是互聯網的主力軍。然而&#xff0c;隨著互聯網應用場景的日…

全球城市范圍30米分辨率土地覆蓋數據(1985-2020)

Global urban area 30 meter resolution land cover data (1985-2020) 時間分辨率年空間分辨率10m - 100m共享方式保護期 277 天 5 時 42 分 9 秒數據大小&#xff1a;8.98 GB數據時間范圍&#xff1a;1985-2020元數據更新時間2024-01-11 數據集摘要 1985~2020全球城市土地覆…

【Vue】單元測試(Jest/Vue Test Utils)

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Vue 文章目錄 1. Vue 單元測試簡介1.1 為什么需要單元測試1.2 測試工具介紹 2. 環境搭建2.1 安裝依賴2.2 配置 Jest 3. 編寫第一個測試3.1 組件示例3.2 編寫測試用例3.3 運行測試 4. Vue Test Utils 核心 API4.1 掛載組件4.2 常…

數據湖的管理系統管什么?主流產品有哪些?

一、數據湖的管理系統管什么&#xff1f; 數據湖的管理系統主要負責管理和優化存儲在數據湖中的大量異構數據&#xff0c;確保這些數據能夠被有效地存儲、處理、訪問和治理。以下是數據湖管理系統的主要職責&#xff1a; 數據攝入管理&#xff1a;管理系統需要支持從多種來源&…

英文中日期讀法

英文日期的讀法和寫法因地區&#xff08;英式英語與美式英語&#xff09;和正式程度有所不同&#xff0c;以下是詳細說明&#xff1a; 一、日期格式 英式英語 (日-月-年) 寫法&#xff1a;1(st) January 2023 或 1/1/2023讀法&#xff1a;"the first of January, twenty t…

衡量矩陣數值穩定性的關鍵指標:矩陣的條件數

文章目錄 1. 定義2. 為什么要定義條件數&#xff1f;2.1 分析線性系統 A ( x Δ x ) b Δ b A(x \Delta x) b \Delta b A(xΔx)bΔb2.2 分析線性系統 ( A Δ A ) ( x Δ x ) b (A \Delta A)(x \Delta x) b (AΔA)(xΔx)b2.3 定義矩陣的條件數 3. 性質及幾何意義3…

4月22日復盤-開始卷積神經網絡

4月24日復盤 一、CNN 視覺處理三大任務&#xff1a;圖像分類、目標檢測、圖像分割 上游&#xff1a;提取特征&#xff0c;CNN 下游&#xff1a;分類、目標、分割等&#xff0c;具體的業務 1. 概述 ? 卷積神經網絡是深度學習在計算機視覺領域的突破性成果。在計算機視覺領…

【網絡原理】從零開始深入理解TCP的各項特性和機制.(三)

上篇介紹了網絡原理傳輸層TCP協議的知識,本篇博客給大家帶來的是網絡原理剩余的內容, 總體來說,這部分內容沒有上兩篇文章那么重要,本篇知識有一個印象即可. &#x1f40e;文章專欄: JavaEE初階 &#x1f680;若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分…

解決qnn htp 后端不支持boolean 數據類型的方法。

一、背景 1.1 問題原因 Qnn 模型在使用fp16的模型轉換不支持類型是boolean的cast 算子&#xff0c;因為 htp 后端支持量化數據類型或者fp16&#xff0c;不支持boolean 類型。 ${QNN_SDK_ROOT_27}/bin/x86_64-linux-clang/qnn-model-lib-generator -c ./bge_small_fp16.cpp -b …

使用Three.js搭建自己的3Dweb模型(從0到1無廢話版本)

教學視頻參考&#xff1a;B站——Three.js教學 教學鏈接&#xff1a;Three.js中文網 老陳打碼 | 麒躍科技 一.什么是Three.js&#xff1f; Three.js? 是一個基于 JavaScript 的 ?3D 圖形庫&#xff0c;用于在網頁瀏覽器中創建和渲染交互式 3D 內容。它基于 WebGL&#xff0…

PostgreSQL WAL 冪等性詳解

1. WAL簡介 WAL&#xff08;Write-Ahead Logging&#xff09;是PostgreSQL的核心機制之一。其基本理念是&#xff1a;在修改數據庫數據頁之前&#xff0c;必須先將這次修改操作寫入到WAL日志中。 這確保了即使發生崩潰&#xff0c;數據庫也可以根據WAL日志進行恢復。 恢復的核…

git提交規范記錄,常見的提交類型及模板、示例

Git提交規范是一種約定俗成的提交信息編寫標準&#xff0c;旨在使代碼倉庫的提交歷史更加清晰、可讀和有組織。以下是常見的Git提交類型及其對應的提交模板&#xff1a; 提交信息的基本結構 一個標準的Git提交信息通常包含以下三個主要部分&#xff1a; Header?&#xff1a;描…

FastAPI系列06:FastAPI響應(Response)

FastAPI響應&#xff08;Response&#xff09; 1、Response入門2、Response基本操作設置響應體&#xff08;返回數據&#xff09;設置狀態碼設置響應頭設置 Cookies 3、響應模型 response_model4、響應類型 response_classResponse派生類自定義response_class 在“FastAPI系列0…

每日一題(小白)模擬娛樂篇33

首先&#xff0c;理解題意是十分重要的&#xff0c;我們是要求最短路徑&#xff0c;這道題可以用dfs&#xff0c;但是題目給出的數據是有規律的&#xff0c;我們可以嘗試模擬的過程使用簡單的方法做出來。每隔w數字就會向下轉向&#xff0c;就比如題目上示例的w6&#xff0c;無…

哈希封裝unordered_map和unordered_set的模擬實現

文章目錄 &#xff08;一&#xff09;認識unordered_map和unordered_set&#xff08;二&#xff09;模擬實現unordered_map和unordered_set2.1 實現出復用哈希表的框架2.2 迭代器iterator的實現思路分析2.3 unordered_map支持[] &#xff08;三&#xff09;結束語 &#xff08;…