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