每次發(fā) PHP編譯器BPC新版本 的文章/帖子,都有會網(wǎng)友評論說為什么不用go/java/.net或者其它別的語言.
今天就來說說為什么?
最初決定要開發(fā)BPC是為了想要本地部署云招OurATS的一個核心組件 簡歷解析器bob-parser.
bob-parser是用PHP開發(fā)的,而PHP的源碼加密方案沒有找到一個100%可靠的,并且還想解決軟件授權(quán)問題.
有網(wǎng)友一提到源碼保護什么的,老是會說你的代碼是有多好,多有價值,給我我也不看,屎山一堆.
這個問題我們后邊再討論.
但云招的做事風(fēng)格大致就是這樣,想要解決一個問題時,就會盡可能地想把這個問題解決好.
開發(fā)了BPC一段時間后,發(fā)現(xiàn)實際上不只能解決 php cli 程序的編譯,php web項目通過編譯成動態(tài)鏈接庫當(dāng)作module嵌入apache就好了,再進一步,引入了 althttpd, apache也不需要了.
云招OurATS 是一個招聘管理系統(tǒng), ATS 是 Applicant Tracking System 的縮寫.
非這個領(lǐng)域的人一開始往往會把ATS和招聘渠道(Jobboard)弄混.
招聘渠道是指 Boss直聘/智聯(lián)招聘/51job 等面向求職者的網(wǎng)站.
企業(yè)從招聘渠道獲取到簡歷后,或者說候選人把簡歷投遞給企業(yè)后,下一步進行 簡歷篩選/征求用人部門意見/安排面試/Offer審批/Offer發(fā)放... 等工作時需要的 申請追蹤系統(tǒng) 就是ATS.
當(dāng)然現(xiàn)在的招聘渠道企業(yè)后臺可能也有一部分ATS的功能.
云招OurATS沒怎么搞市場推廣,所以雖然我們從2010年就開始做了,很多網(wǎng)友可能沒聽說過.
這里列幾個大家可能聽過/用過的招聘管理系統(tǒng).
有些網(wǎng)友認為開發(fā)一套招聘管理系統(tǒng)沒什么難的,找?guī)讉€人搞個半年還能搞不出來?
我們來看看實際案例.
北森在2019重構(gòu)了它的招聘管理系統(tǒng),在其官網(wǎng)發(fā)布的文章中這樣說:
2019年,北森基于Nature Design3.0“高效、愉悅、溫暖”的設(shè)計理念,歷時3年,斥資2億人民幣,重塑新一代體驗優(yōu)先的招聘管理系統(tǒng)。
文章鏈接: https://www.beisen.com/res/848.html
顯然,北森的這次重構(gòu)應(yīng)該沒有更換技術(shù)棧,從其 招聘的崗位 來看,開發(fā)語言應(yīng)該是 java/.net.
在不更換開發(fā)語言的情況下,重做一個招聘管理系統(tǒng)的成本是 3年 + 2億人民幣.
如果換語言的,成本恐怕不只這么多了.
那么這個歷時3年,斥資2億人民幣,重塑新一代的招聘系統(tǒng)有驚艷了市場嗎?看看北森在港股的表現(xiàn)就知道了.
在脈脈上經(jīng)??吹組oka比北森好的評價,可是在脈脈上Moka比北森裁員裁和還狠.
如果還有網(wǎng)友不信邪,可以下水試一試,反正國內(nèi)做ATS的也沒幾家,機會還有.
云招OurATS從2010年開始,到今年已經(jīng)持續(xù)開發(fā)了15年,代碼庫現(xiàn)存代碼上千萬行,換語言重構(gòu)的成本不好估量.
而PHP編譯器BPC從開始開發(fā)到成功編譯云招OurATS,用了3年,資金投入約500萬人民幣.
說到底,PHP真是世界上最好的語言呀!
首先,完美解決了源碼保護,軟件授權(quán)這兩大基本需求.
如果換java/.net的話,這兩個語言的反編譯比PHP成熟多了.
GraalVM 和 .NET 8 的 Native AOT 是否好用還不好說.
如果換go的話,源碼保護是沒問題,但需要解決軟件授權(quán)的問題,當(dāng)然java/.net也需要解決這個問題.
BPC編譯還帶來了額外好處:
軟件交付變得簡單了.
整個云招OurATS招聘系統(tǒng)被編譯成了一個二進制可執(zhí)行文件,日常升級維護就是替換這一個文件(當(dāng)然整個系統(tǒng)的運行還需要其它幾個輔助程序).
運行環(huán)境更安全了.
生產(chǎn)環(huán)境不需要PHP解釋器,因為PHP源碼已經(jīng)被BPC最終轉(zhuǎn)譯成C,然后編譯成可執(zhí)行文件了.
也就是說,服務(wù)器上不能執(zhí)行PHP代碼,很多針對PHP的攻擊手段失效了.
合作方式更靈活
PHP項目源碼保護的一個做法是使用編譯型語言編寫部分核心邏輯,然后其它代碼開源.
有了BPC之后,完全可以把核心PHP代碼編譯成動態(tài)鏈接庫,其它部分開源.
BPC的目標(biāo)是源碼保護和軟件授權(quán),現(xiàn)階段沒有在生成代碼和運行性能上做特別的優(yōu)化.
因此雖然是編譯成C,但性能在大多數(shù)場景下還不如解釋執(zhí)行的PHP快.
所以如果是性能敏感的項目慎用.
常用的擴展都有嗎
ctype
curl
date
event
fileinfo
filter
gd
gmp
hash
iconv
imagick
json
mbstring
mysqli
openssl
pcntl
pcre
pdo
pdo_mysql
pdo_sqlite
posix
scws
session
standard
sysvsem
tinycdb
xml
zip
zlib
單純的 echo 'hello' 加上 workerman 沒什么效果的, 可以直接選中 workerman 或者 gatewayworker 的例子來編譯.
后面解決 性能問題 基本就完美了 ,感覺有搞頭呀 php加密 然后配合webman性能再上去 這不無敵了嘛 還是靜態(tài)的