国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman打包二進制如何能縮小內(nèi)存

leedom

問題描述

使用php webman build:bin 8.2打包項目以后, 得到的webman.bin文件大小為52.7M;
放到服務(wù)器上啟動以后共17個進程, 每個進程都是62.5M;總消耗內(nèi)存1059M;
我想知道如何才能縮小內(nèi)存占用,畢竟本地的每個進程才占用5-10M左右;

為此你搜索到了哪些方案及不適用的原因

查詢了可能有幫助的方法, 排除vendor目錄,但是啟動不來

1219 3 1
3個回答

walkor 打賞

忽略或者刪除不需要打包的文件

  • leedom 2024-04-29

    老大可以舉個例子嗎 那些是可以忽略的 我項目中除了代碼文件沒有其他靜態(tài)文件或者日志信息

  • nitron 2024-04-29

    比如Cache,一般的包都會包含F(xiàn)ile.Redis,Memcache,DB之類的存儲方式支持,而你的項目只用了Redis,那可以去掉Redis之外的相關(guān)文件

xiaopi

主要是打包成二進制需要把phar和php.micro.sfx合并到一起
1.phar包的優(yōu)化,可以通過減少不相干的composer包來減少,或者靜態(tài)資源不要打包進去
2.php8.1.micro.sfx的優(yōu)化可以通過減少php擴展來進行
不過二進制打包始終是要把php和代碼都要打包進行的,所以本質(zhì)上不可能通過優(yōu)化使體積驟減,而且由于進程隔離,所以每個進程都需要把php+代碼加載到內(nèi)存中?;旧暇褪嵌M制包有多大,每個進程所占用的內(nèi)存就有多大。

方案:
1.在需求可控的情況下,減少進程數(shù)。比如我們有個項目就使用webman做一個查詢服務(wù),由于數(shù)據(jù)是不怎么變化的,所以提前加載到內(nèi)存中,webman的worker進程不存在IO消耗,所以自然開啟一到兩個進程就可以滿足大并發(fā)查詢服務(wù),每個進程占倆三百M的內(nèi)存。
2.不使用二進制包,使用php靜態(tài)可執(zhí)行文件+phar包的形式,自然每個進程占用的內(nèi)存就下來了,進程中只有php文件,不包括php8.1.micro.sfx

  • 暫無評論
crazywhalecc

減小體積可分為兩部分:減小 micro.sfx 的體積、減小 PHP/PHAR 代碼的體積。

減小 micro.sfx 的體積

  1. 在編譯靜態(tài) PHP、micro 之前,先根據(jù)你的項目特點,選擇最小擴展集合,如果是生產(chǎn)環(huán)境則不需要 require-dev 下的擴展。
  2. 對于 Linux、Windows,你可以使用 --with-upx-pack 來減小生成的 micro.sfx 二進制文件體積(一般情況下 70MB 可縮減至 30MB)。但該方法不會減少運行時的內(nèi)存占用大小。
  3. 使用較低版本的 PHP,越新版本的 PHP 占用內(nèi)存越大。

減小 PHAR 代碼的體積

你可以使用 box-project/box 來打包,其中會自帶壓縮功能。同時你可以使用 zlib、去除空白字符等方式壓縮 phar 文件大小。

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??