每次发 PHP编译器BPC新版本 的文章/帖子,都有会网友评论说为什么不用go/java/.net或者其它别的语言.
今天就来说说为什么?
最初决定要开发BPC是为了想要本地部署云招OurATS的一个核心组件 简历解析器bob-parser.
bob-parser是用PHP开发的,而PHP的源码加密方案没有找到一个100%可靠的,并且还想解决软件授权问题.
有网友一提到源码保护什么的,老是会说你的代码是有多好,多有价值,给我我也不看,屎山一堆.
这个问题我们后边再讨论.
但云招的做事风格大致就是这样,想要解决一个问题时,就会尽可能地想把这个问题解决好.
开发了BPC一段时间后,发现实际上不只能解决 php cli 程序的编译,php web项目通过编译成动态链接库当作module嵌入apache就好了,再进一步,引入了 althttpd, apache也不需要了.
云招OurATS 是一个招聘管理系统, ATS 是 Applicant Tracking System 的缩写.
非这个领域的人一开始往往会把ATS和招聘渠道(Jobboard)弄混.
招聘渠道是指 Boss直聘/智联招聘/51job 等面向求职者的网站.
企业从招聘渠道获取到简历后,或者说候选人把简历投递给企业后,下一步进行 简历筛选/征求用人部门意见/安排面试/Offer审批/Offer发放... 等工作时需要的 申请追踪系统 就是ATS.
当然现在的招聘渠道企业后台可能也有一部分ATS的功能.
云招OurATS没怎么搞市场推广,所以虽然我们从2010年就开始做了,很多网友可能没听说过.
这里列几个大家可能听过/用过的招聘管理系统.
有些网友认为开发一套招聘管理系统没什么难的,找几个人搞个半年还能搞不出来?
我们来看看实际案例.
北森在2019重构了它的招聘管理系统,在其官网发布的文章中这样说:
2019年,北森基于Nature Design3.0“高效、愉悦、温暖”的设计理念,历时3年,斥资2亿人民币,重塑新一代体验优先的招聘管理系统。
文章链接: https://www.beisen.com/res/848.html
显然,北森的这次重构应该没有更换技术栈,从其 招聘的岗位 来看,开发语言应该是 java/.net.
在不更换开发语言的情况下,重做一个招聘管理系统的成本是 3年 + 2亿人民币.
如果换语言的,成本恐怕不只这么多了.
那么这个历时3年,斥资2亿人民币,重塑新一代的招聘系统有惊艳了市场吗?看看北森在港股的表现就知道了.
在脉脉上经常看到Moka比北森好的评价,可是在脉脉上Moka比北森裁员裁和还狠.
如果还有网友不信邪,可以下水试一试,反正国内做ATS的也没几家,机会还有.
云招OurATS从2010年开始,到今年已经持续开发了15年,代码库现存代码上千万行,换语言重构的成本不好估量.
而PHP编译器BPC从开始开发到成功编译云招OurATS,用了3年,资金投入约500万人民币.
说到底,PHP真是世界上最好的语言呀!
首先,完美解决了源码保护,软件授权这两大基本需求.
如果换java/.net的话,这两个语言的反编译比PHP成熟多了.
GraalVM 和 .NET 8 的 Native AOT 是否好用还不好说.
如果换go的话,源码保护是没问题,但需要解决软件授权的问题,当然java/.net也需要解决这个问题.
BPC编译还带来了额外好处:
软件交付变得简单了.
整个云招OurATS招聘系统被编译成了一个二进制可执行文件,日常升级维护就是替换这一个文件(当然整个系统的运行还需要其它几个辅助程序).
运行环境更安全了.
生产环境不需要PHP解释器,因为PHP源码已经被BPC最终转译成C,然后编译成可执行文件了.
也就是说,服务器上不能执行PHP代码,很多针对PHP的攻击手段失效了.
合作方式更灵活
PHP项目源码保护的一个做法是使用编译型语言编写部分核心逻辑,然后其它代码开源.
有了BPC之后,完全可以把核心PHP代码编译成动态链接库,其它部分开源.
BPC的目标是源码保护和软件授权,现阶段没有在生成代码和运行性能上做特别的优化.
因此虽然是编译成C,但性能在大多数场景下还不如解释执行的PHP快.
所以如果是性能敏感的项目慎用.
后面解决 性能问题 基本就完美了 ,感觉有搞头呀 php加密 然后配合webman性能再上去 这不无敌了嘛 还是静态的
关于性能是有一些改进可做,还需要时间.
目前性能是什么阶段
性能目前还没什么改进
常用的扩展都有吗
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
Oops, something wrong! :):):)
目前支持webman吗?
性能现在还不行,等等吧
勾选了Libs workerman, 需要加上需要的扩展.
单纯的 echo 'hello' 加上 workerman 没什么效果的, 可以直接选中 workerman 或者 gatewayworker 的例子来编译.
点赞支持