谈谈云招OurATS为什么不从PHP转go/java/.net,而是搞了个PHP编译器BPC

heguangyu5

每次发 PHP编译器BPC新版本 的文章/帖子,都有会网友评论说为什么不用go/java/.net或者其它别的语言.

今天就来说说为什么?

1. 缘起

最初决定要开发BPC是为了想要本地部署云招OurATS的一个核心组件 简历解析器bob-parser.

bob-parser是用PHP开发的,而PHP的源码加密方案没有找到一个100%可靠的,并且还想解决软件授权问题.

有网友一提到源码保护什么的,老是会说你的代码是有多好,多有价值,给我我也不看,屎山一堆.

这个问题我们后边再讨论.

但云招的做事风格大致就是这样,想要解决一个问题时,就会尽可能地想把这个问题解决好.

开发了BPC一段时间后,发现实际上不只能解决 php cli 程序的编译,php web项目通过编译成动态链接库当作module嵌入apache就好了,再进一步,引入了 althttpd, apache也不需要了.

2. 背景

云招OurATS 是一个招聘管理系统, ATS 是 Applicant Tracking System 的缩写.

非这个领域的人一开始往往会把ATS和招聘渠道(Jobboard)弄混.

招聘渠道是指 Boss直聘/智联招聘/51job 等面向求职者的网站.

企业从招聘渠道获取到简历后,或者说候选人把简历投递给企业后,下一步进行 简历筛选/征求用人部门意见/安排面试/Offer审批/Offer发放... 等工作时需要的 申请追踪系统 就是ATS.

当然现在的招聘渠道企业后台可能也有一部分ATS的功能.

云招OurATS没怎么搞市场推广,所以虽然我们从2010年就开始做了,很多网友可能没听说过.

3. 友商

这里列几个大家可能听过/用过的招聘管理系统.

  1. 飞书招聘
  2. 北森招聘管理系统
  3. Moka

4. 为什么不换开发语言

有些网友认为开发一套招聘管理系统没什么难的,找几个人搞个半年还能搞不出来?

我们来看看实际案例.

北森在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真是世界上最好的语言呀!

5. 再说说BPC编译带来的好处

首先,完美解决了源码保护,软件授权这两大基本需求.

如果换java/.net的话,这两个语言的反编译比PHP成熟多了.

GraalVM 和 .NET 8 的 Native AOT 是否好用还不好说.

如果换go的话,源码保护是没问题,但需要解决软件授权的问题,当然java/.net也需要解决这个问题.

BPC编译还带来了额外好处:

  1. 软件交付变得简单了.

    整个云招OurATS招聘系统被编译成了一个二进制可执行文件,日常升级维护就是替换这一个文件(当然整个系统的运行还需要其它几个辅助程序).

  2. 运行环境更安全了.

    生产环境不需要PHP解释器,因为PHP源码已经被BPC最终转译成C,然后编译成可执行文件了.

    也就是说,服务器上不能执行PHP代码,很多针对PHP的攻击手段失效了.

  3. 合作方式更灵活

    PHP项目源码保护的一个做法是使用编译型语言编写部分核心逻辑,然后其它代码开源.

    有了BPC之后,完全可以把核心PHP代码编译成动态链接库,其它部分开源.

6. 最后说说BPC的美中不足

BPC的目标是源码保护和软件授权,现阶段没有在生成代码和运行性能上做特别的优化.

因此虽然是编译成C,但性能在大多数场景下还不如解释执行的PHP快.

所以如果是性能敏感的项目慎用.

862 7 0
7个评论

tanhongbin

后面解决 性能问题 基本就完美了 ,感觉有搞头呀 php加密 然后配合webman性能再上去 这不无敌了嘛 还是静态的

  • heguangyu5 2024-07-17

    关于性能是有一些改进可做,还需要时间.

kakka

目前性能是什么阶段

liwenshu

常用的扩展都有吗

  • heguangyu5 2024-10-08

    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

wxy545812093

Oops, something wrong! :):):)

  • 暂无评论
euii

目前支持webman吗?

euii

截图

  • heguangyu5 10天前

    勾选了Libs workerman, 需要加上需要的扩展.

  • heguangyu5 10天前

    单纯的 echo 'hello' 加上 workerman 没什么效果的, 可以直接选中 workerman 或者 gatewayworker 的例子来编译.

xiaobai

点赞支持

  • 暂无评论

heguangyu5

2100
积分
0
获赞数
0
粉丝数
2022-11-24 加入
×
🔝