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

2015-10-06 18:20:56 +08:00
 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 。

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

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

5444 次点击
所在节点    问与答
65 条回复
squid157
2015-10-06 23:44:23 +08:00
@clippit

对我这种只会写最简单的东西的人,足够复杂了(毕竟我不做开发)。。。我不是做这个的,起初觉得很简单,越看发现事情越多。
kslr
2015-10-07 00:32:57 +08:00
@squid157 这样说,我不觉得你有能力设计出更好的结构,只会搞得一团糟,最后只能放弃,大部分重构都是这样的结束的,你最好想好了。
usedname
2015-10-07 00:34:20 +08:00
mysql 这个驱动必须被移除, pdo 才是王道,用 php 5.4 真的很幸福了,像楼上们说的用 5.2 的公司真的多了去了
squid157
2015-10-07 00:54:30 +08:00
@kslr 之前那个属于上古时期的设计,总觉得改了会比不改好,慢慢前进吧。感谢提醒。
squid157
2015-10-07 00:56:00 +08:00
@usedname
然而散落在几百个.php 中拼接出来的 SQL 查询,并非一天能解决的。
rainysia
2015-10-07 01:53:10 +08:00
web 应用迁移成 python 会哭死你.有些语言擅长某些特定领域是有原因的. python 做做爬虫, 数据分析不挺好的. php 随便找时下流行点儿的框架都可以秒 django 几条街了.
倒是 tornado/flask 这些轻便的框架, 你重构又需要配太多.
就像楼上说的, "我不觉得你有能力设计出更好的结构,只会搞得一团糟 ,最后只能放弃"

简单的, 就直接改改兼容就好. mysql--->mysqli 不就是分分钟的事. 至于这么复杂?
squid157
2015-10-07 02:09:47 +08:00
@rainysia

你要看到原来的代码,就觉得,不重构的话,迟早要散架。

个人觉得确实有优劣,但按照我现在的构想,以及对语言 /框架的熟悉程度, PHP 可能确实不是最优的。

不过还是感谢提醒。
lavadore
2015-10-07 02:14:57 +08:00
@squid157 这种古董项目,不出问题别去碰它。以后的事也不是你来操心的吧,如果代码确实烂,重新写说不定都比迁移要简单很多
squid157
2015-10-07 02:18:19 +08:00
@lavadore 算是个人兴趣吧,不改变数据库结构的情况下,想要 rollback 也很容易。

研究了一阵子,数据库设计大体没问题,觉得可以逐渐过渡。但现在的程序,就像那些给新手的 Tutorial 里面写的小例子一样,各种东西混杂在一起,只是一个页面就能写几千行的 php 文件,偶尔出了毛病 debug 起来都是十分痛苦的。
ibcker
2015-10-07 02:45:55 +08:00
PHP 上个性能调试工具,看下哪里有问题··改改就好了···重写个啥子···
movtoy
2015-10-07 10:38:15 +08:00
用什么不重要。。关键是哪个你拿手!或者相关人拿手!
kslr
2015-10-07 10:51:53 +08:00
Daddy
2015-10-07 11:56:09 +08:00
你就是:心太大,想太多。

然后就是被所谓 PHP 的梗梗到了,自以为有了信仰,工具是拿来用的。
Comdex
2015-10-07 12:03:45 +08:00
强力推荐用 Golang ,性能和开发效率两不误,部署也简单,一个二进制即可
magicdawn
2015-10-07 12:07:30 +08:00
node.js 可以试试~
golang 也不错
squid157
2015-10-07 13:10:14 +08:00
@Daddy
这代码我看了一年,确实蛋疼。

而且 PHP 本身的坑也掉进去好多了,心情不愉快。
msg7086
2015-10-07 13:19:45 +08:00
别考虑性能。
别考虑 centos 。
如果你没有能力写复杂的东西,就别想着重写或者迁移了。搞这个的,首先你要有架构师的能力。
一天 2m 请求不算很多,拿个 vps 就能跑。我自己写的一个 public tracker 一天跑 15m 请求, i5 的机子 cpu 基本动都不动。
ekousp
2015-10-07 13:25:56 +08:00
无需迁移。
WildCat
2015-10-07 13:29:39 +08:00
100k 行代码你还是别重构了,有这精力能去干赚好几万块的私活了。

学校内部项目还这么上心我也是醉了。

哥们,一定要向钱看齐啊
shiny
2015-10-07 14:22:15 +08:00
如果你对 mysql 扩展如此依赖,说明你的代码有很大的问题。

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

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

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

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

© 2021 V2EX