从 PHP 迁移到什么平台比较合适?

2015-10-06 18:20:56 +08:00
squid157  squid157

下面的背景内容挺长的,希望大家能先粗略了解一下情况

我现在在管一个学校内部的 Private Tracker ,负责维护。 Tracker 和周边的东西都是拿 PHP 写的,算是“祖传的”代码了。搞了一个夏天终于把它搞成 PHP 5.5 兼容了。至于再往后的版本,像兼容 PHP 7 需要把 mysql 砍了换 mysqli 或者 PDO ,我看并不是很现实,所以就没搞。

现在想继续加功能,然而实在是无法忍受坑爹的世界第一语言了,因而明确认为需要换开发平台。不过,迁移要逐步完成,所以至少要保证两套程序都用一样的数据库和表结构——至少原有的数据要一样,对浏览器留下的 cookie 和用户验证方法也要一致……总归有不少限制。

一方面迁移工作比较多,另一方面人手非常不够,可以看作只有一个人利用业余时间在搞(大学三年级,还好课不太多)。所以我非常在意迁移的方向,选了坑多的路就是自己在作死。

现在考虑的方向有这么几个:

下面是纠结的东西:

我不是专门学习软件工程 /CS 的,但是相对熟悉 Python (日常计算器,科学计算,抓网页),之前也拿 Django 写过一些简单的东西。然而我不确定 Python 的性能怎么样,因为我们服务器比较渣,而每天处理的请求数量大概有 200 万个,有朝一日全是 Python 后卡成傻逼,那我估计会被管理组的其他人拖出去枪毙个几分钟的。

C#看起来不错,至少官方 IDE 挺爽的。但服务器是 Linux ,只能拿 Mono 跑,或者日后的 CoreCLR 。总觉得这样哪里有些奇怪,或者会被性能 /兼容性 /莫名其妙的 bug 坑死。另一方面 ASP.NET 这种东西似乎比 Django 的模式复杂一些,不过我刚看了一个小时不到,也不敢妄下结论。

如果用 Java ,我个人不是很喜欢。看架势估计想撸出来什么有用的东西得猴年马月了。 Scala 或许不错,但也有很多人说有种种问题。而且,即使使用 JVM 上面的东西,我感觉大概率会用 Thrift 之类的东西通过 RPC 调用它,前端依然 PHP (不过看起来可能会好很多)。

最后一个选项就是接着用 PHP ,慢慢地修老 bug ,重构,分离前后端逻辑,迁移到 PDO/mysqli 。然而首先是我觉得撸 PHP 并不会比撸 Java 更优雅,同时也不想强奸眼睛和大脑,而且似乎 PHP 7 的性能也就是呵呵。另一方面,这样做的话我的新东西会被(老代码的) GPL 污染,虽然原则上只在那个服务器部署并没有问题,但也是莫名其妙感觉蛋疼。 HHVM/Hack 不予考虑,尤其是服务器还是上古的 32 位 CentOS 5 。

所以,如果要保证新旧程序共存并逐渐迁移,在人力极为有限的情况下,换成什么平台最合适?

可以是上面那几个方案里面的一个,也可以提出其他的建议。在此提前说一句谢谢😊

5174 次点击
所在节点   问与答  问与答
65 条回复
ljbha007
ljbha007
2015-10-06 18:43:50 +08:00
推荐 Python + flask 简单好用功能强大
FFLY
FFLY
2015-10-06 18:45:53 +08:00
首先你的出发点就有点奇怪,与其考虑 PHP7 那么遥远的事,不如考虑功能开发。至于性能,就更是杞人忧天了。你知道有多少大型 PT 是跑在 VPS 上的吗?校内 PT 这种用户量,还不到考虑性能的时候。如果说运行过程中有性能问题,第一查代码,代码没问题的情况下查服务器环境。我还真不相信,一个校内 PT 就能跑出 PHP 的性能,而且 PHP7 的性能目前综合各类信息来看,绝不是呵呵。
zonghua
zonghua
2015-10-06 18:46:57 +08:00
C#/.NET on Linux 与众不同。
Felldeadbird
Felldeadbird
2015-10-06 18:52:14 +08:00
php7 和 php5 区别不大,选 php 吧。根据大多数人的总结, web 主要瓶颈不是语言,而是 io ,数据库方面。
chaucerling
chaucerling
2015-10-06 19:24:09 +08:00
平均下来每秒 20 多,根本不用考虑性能
squid157
squid157
2015-10-06 19:26:28 +08:00
@Felldeadbird mysql 模块被消灭了。我个人不喜欢 PHP 。
squid157
squid157
2015-10-06 19:28:26 +08:00
@chaucerling 显然半夜三四点学校都熄灯了。不过确实,没错,请求数量并不恐怖。我自己是新手,并不了解这些。
squid157
squid157
2015-10-06 19:29:11 +08:00
@Felldeadbird 确实,不过还好,感觉 MySQL 基本都在读 cache
squid157
squid157
2015-10-06 19:30:23 +08:00
@zonghua 嗯,是与众不同,所以觉得并不合适。但 MS 在大推.NET 跨平台,估计也不是非常糟糕,但不知道还有谁那么玩过。我是不想去作死的。
squid157
squid157
2015-10-06 19:41:22 +08:00
@FFLY 我看 PHP 他们挺喜欢把旧版本作古的。 PHP5.4 前两天刚刚 end of life 。

我也是刚刚接触服务器,所以不知道。但我看很多比较屌爆的服务,请求也是每秒几百——然而他们有负载均衡和集群。我也去 Google 了一阵子,但很多都是测试 HTTP 静态页面请求,也就是 Apache/Nginx 的性能。因此我也不知道我们的东西到底能扛多少,我也不敢真去测试它。反过来,上次 MySQL 处于某种问题被重启,因为内存里面没缓存,整个服务也卡了一阵子。

换 PHP7 的话,一样是各种老旧代码需要重构,而想对 Python 我真的不喜欢 PHP 啊。

不过既然都说性能不是问题,那我就拿 Python 去玩了。
FFLY
FFLY
2015-10-06 19:46:43 +08:00
@squid157 淡定,选自己喜欢的就好了,还有大把的老程序只能 PHP5.2 ONLY 呢!
squid157
squid157
2015-10-06 20:05:14 +08:00
@FFLY 我就是用了一阵子把老程序 5.2 改到 5.5 。看到 mysql 这个模块停止更新,到 7 里面移除,我就实在是没动力接着改了。感谢回答。
Felldeadbird
2015-10-06 20:10:31 +08:00
@squid157 mysql 扩展函数被消灭是必然的。这玩意对于新手来说,容易产生注入漏洞。 PHP 若还保留,只会成为下一个 ASP 。更换语言不是那么简单的事情。你切换成 PHP7 ,只需要自己封装一个 query 和 fetach_array 类库就行了。走 PDO 或者 mysqli 。基本零修改。 当然,你切换语言必须要考虑后人和现有的人,否则等你离开后,会被人骂的。
Felldeadbird
2015-10-06 20:13:39 +08:00
@squid157 他们抱着 5.4 已经很好了。网上一大推公司坚守着 PHP5.2 的 ecshop 系列程序。这才叫吐血。
zts1993
2015-10-06 20:32:57 +08:00
Java 吧。。
DennyDai
2015-10-06 20:35:37 +08:00
Rails
kn007
2015-10-06 20:36:59 +08:00
php7 可以用 mysql 编译进去就行了。。。
改成 mysqli 其实一点不麻烦
kn007
2015-10-06 20:37:16 +08:00
如果要换。。。我觉得 nodejs 。。不错
orFish
2015-10-06 20:38:41 +08:00
重构还不如重写了。。。用 djaongo 吧。。
hahasong
2015-10-06 20:45:43 +08:00
用 php 重写吧, nexus php 那时候写 pt 那时候还没有流行 mvc , orm 模型这些东西,用 php 重写应该很快。结构清晰了,以后扩展维护起来就方便多了。期待开源

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/225930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX