抛弃 PHP 代价太高


Posted in PHP onApril 26, 2016

前言

我初次尝试编程使用的语言是php,并且在数个使用php作为主要开发语言的公司工作过。但是,我并不会对其他语言视而不见,并且现如今php已经不是我主要的开发语言了。

我认为我是一个可以因为“不需要过度担心语言设计”与“尽可能轻松地快速地赚钱、完成工作”就会很快乐的人。我最近刚从一个主要以php作为前端开发的全职工作岗位中离职。

最近我通读了那篇虽然已经陈旧但仍勾起如此真实的痛苦,以至于我无法再忽视的博文《Eevee.PHP:糟糕的设计带来的碎片 》。但是,我遇到了一些障碍,这是关于我不使用php后的艰难时期的故事。

做闲时项目的经济问题

我很自由。如果我不想,我可以一行php代码都不用写;我不再需要进行后端开发工作;还有,除非是浏览器由于某些灾难性的变化导致崩溃,否则由于可预见的未来,我将不必去做这些工作。

然而,我确实有一堆我想规划建立并促成实现的项目,项目还不止一个。实际上,我正试着建立一大堆规模略小的网站,以此获得一些满意的消极收入(不缴税收入)。(无论如何这都是我的目标)为此,我昨天启动了我的第一个未命名的网站。

不幸的是,因为这是一个需要自己掏钱的项目以及我很需要建很多站点,我不得不直接割舍一些东西。下面我将罗列它们,解释一下为什么我相信主机提供商不会为我工作,还有谈一下和我处于同一窘境的人们。

Heroku

如果我有钱,我会把所有的应用都放在heroku上面。就我的使用体验而言,Heroku非常不可思议。托管和配置你自己的环境一点儿都不麻烦,与你使用的语言也无关,如此种种。

使用Heroku的问题在于他的收费模式,尽管每个项目每个月7美元看起来并不多,但是当你有许多个项目的时候,费用就像火箭一样蹭蹭蹭往上涨。就算只有十个应用,对于可能没有任何结果的东西而言,每个月上到70美元的成本也已经太高了。

上面的成本甚至都没有考虑使用数据库的因素,每1000万行数据需要额外的9美元。如果一个项目有很大的数据流量,那也会加重应用的成本,很快我们就会发现每个月的成本变成一百多美元。

Amazon web services

AWS 的价格看起来更便宜点,但是我一直认为使用它在许多方面上会增加复杂度,配置和花费上同样会提高成本,对于一个每月只有几百访问量的小网站来说相当不值得。

我不能说我有很多使用AWS的经验,但关于它的一切都有一股浓浓的企业味道,我相信复杂应用的客户才是他们的关注点。

也许怎样有效率地在AWS上部署是值得学习的,但是怎样简单的去部署git服务?为了它我是否需要额外的服务?同样的一个实例是否可以运行多个应用?收费模型又是怎么样的呢?尽管看了他们的价格页面,我还是不明白哪一部分跟我相关。看完他们的网站我心里还是有一堆的问号无法找到答复。

Microsoft Azure

乍一看,微软的Azure似乎才是救世主。然而,即使我非常想要把大型应用部署在这里,我仍然存在一个顾虑,那就是关于Google和HTTPS的。

抛弃 PHP 代价太高

如果你看一下它们的定价模型,你应该就能明白(图片是从我的主页引用过来的,不好意思上面还带着些瑞典语~),认准这些才是最明智的。如果你选择标准版,据我得到的消息是你可以在上面部署多达50个应用。就我的情况来看,差不多也得选个标准版。每月580克朗,折合美元约70刀。虽然还是贵了点,但在Heroku上面那些我喜欢的特性在这里也都能够提供,这样算来也挺值了。当然,Azure略微复杂了一点,并且价格波动频繁,但瑕不掩瑜。

问题在于定价模型里所描述的标准版只支持5个SNI(Server Name Indication)。这是什么意思?根据我的理解,就是只能有5个站点支持SSL。鉴于Google对于不支持SSL的站点已经越来越不友好了,并且,Let's Encrypt项目已经能让每个网站都可以使用HTTPS加密,在我那多达50个站点中却只有5个能获得SSL支持,这一点实在不太好。以上这些只是我的个人理解,而且它提供的说明也有些少,所以也有可能是我理解错了。事实上,我的确希望是我错了,若果真如此,请大家在文章下面的评论栏里回复我。

GleSYS, Digital Ocean, Linode 自己服务器等

用这些钱去跟上面罗列的这些服务提供商租一个VPS才是唯一实际的替代方案。GleSYS的好处在于,有瑞典主机可用,这意味着低延时,并且数据通过美国政府的审查不存在任何风险。我可以放心地把用户数据存在那里。

相较于托管服务,价格是难以置信地低廉,就是得花点时间配置,你必须自己完成所有的设定和组织,这可是很大的工作量。我之所以选择托管服务,最大的原因就是因为,如果我的某个服务挂掉了,而我正在上班,我就必须等到下班回家以后才能处理这些事情,这都可能是七、八个小时以后的事了。

PHP社区提供解决方案

当Eevee抱怨PHP这个语言缺乏独特的特性的时候,社区已经拿出我试过的最炫的托管解决方案。它也正好是我曾经尝试过的最便宜的。

解决方案是Laravel Forge(Laravel工场).

如果你没有立即访问这个连接,让我给你解释一下。Laravel Forge服务$9一个月,他提供无限制的生产级php服务器(安装,设置和配置),你可以从一个Web界面控制所有的服务。更神奇的是,我可以针对任何VPS提供商,即使是最简单的AWS或数字海洋。这将帮助你扩展服务器,设置cron作业,编辑环境配置,使用git push部署等等。

Laravel Forge服务给我提供了Azure或HeroHu的不限应用数量的良好特性(只要VPS可以处理它)。Laravel Forge是不限于Laravel框架,任何PHP应用程序都行。

像Eevee一样,如果本条不能改进你对PHP社区的观念,没什么能了。但认真说,知道这个的人怎么会离开这么棒的服务呢?

利润是重要的

我认为我的故事是非常常见的。我认为我不是孤单的。世界上肯定有成千上万的小公司的负责人需要托管他们的应用程序。要么他们的项目恰好是一个网站。

一个来自Linode的10美元服务器和9美元的Laravel Forge,他们部署很快很便宜,这样打造的服务器很快就可以替代任何的假设,你就不会想做运维工作,包括服务器启动,运行,安装证书等工作。

我在网络上查找过答案,但是唯一令人信服的替代方案就是使用类似于Codeship的持续集成(Continuous Integration)服务。虽然它不是无限的,而且当你拥有超过5个项目(我有这样的计划)的时候费用直接提高到49美元,但是老实说它的服务确实很不错。另外,Codeship还提供自动化测试以及git推送部署服务,但不提供服务器,所以你仍需要自行准备网站服务器、数据库并配置好。

对于其他语言,也许Laravel Forge有更好的替代方案,也许没有。但我仍然认为,对我以及很多其他人来说,抛弃PHP代价实在太高了。即使我能负担的起,也没有什么意义。

最后,再一次引用Eevee的话:

毋庸置疑,PHP太流行了!
PHP 相关文章推荐
PHP中$_SERVER的详细参数与说明
Jul 29 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
初识laravel5
Mar 02 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
PHP 数组操作详解【遍历、指针、函数等】
May 13 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 #PHP
PHP抓取及分析网页的方法详解
Apr 26 #PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 #PHP
基于PHP实现通过照片获取ip地址
Apr 26 #PHP
各种快递查询--Api接口
Apr 26 #PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 #PHP
Yii2增加验证码步骤详解
Apr 25 #PHP
You might like
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
详解Python中where()函数的用法
2018/03/27 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
python3实现猜数字游戏
2020/12/07 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
django 微信网页授权登陆的实现
2019/07/30 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
如何对python的字典进行排序
2020/06/19 Python
Python logging模块原理解析及应用
2020/08/13 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
干部培训自我鉴定
2014/01/22 职场文书
《风筝》教学反思
2014/04/10 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
环卫工作个人总结
2015/03/04 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书