HTTPS 升级指南
上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效。
为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章。…
记录-交流-Web开发知识分享
上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效。
为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章。…
ps.ubuntu自带的nc是netcat-openbsd版,不带-c/-e参数。
pss.在线Markdown编辑器的bug是怎么回事...“#”号依然显示着…
Differences between versions 3.1.0 and 3.1.1 of the MQTT specification:
3.1.0 specification: http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html
3.1.1 specification: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html…
一、客户端 连接冲突会发现以下报错 (开启 debug日志:把配置文件 的log.console.level 改为= debug)
11:20:55.849 [info] Session(060010100000868936): resumed by <0.21232.18>^M^M
11:20:55.849 [warning] Session(060010100000868936): <0.21232.18> kickout <0.31200.17>^M^M
11:20:55.849 [warning] Client(27.187.80.148:9093): clientid '060010100000868936' conflict with <0.21232.18>^M^M…
#!/bin/sh
IP="10.10.100.1"
kill_deamon() {
/etc/init.d/deamon stop
}
start_deamon(){
/etc/init.d/deamon start
}
check_ping() {
local total="0"
local i="0"
while [ $i -lt 10 ]; do
local line=""
#echo "ping $IP"
line=`ping $IP -c 1 -s 1 -W 1 ¦ grep "100%
最近有同学反馈了这样一个问题:
上述语句在脚本中 load 入库的时候会 hang 住,web 前端、命令行操作则要么抛出
Incorrect string value: '\xF0\xA1\x8B\xBE\xE5\xA2...' for column 'name',
要么存入MYSQL数据库的内容会被截断或者乱码,而换做其它的中文则一切正常。
嗯,看起来有点奇怪哈,按理说 utf8 编码是覆盖了所有中文的,不应该出现上述问题。
那我们先来看看插入异常的中文和正常的中文有啥区别:
可以看到上面插入异常的文字占了 4 个字节,而我们插入正常的则只占了 3 个字节。但是 utf8 字符编码不就是可变长,支持 1-4 字节的么?会和这个有关?
嗯,看看官方文档就知道了:
10.1.10.6 The utf8mb4 Character
PHP以前是作为胶水语言成功的,它从数据库抓取数据,然后渲染成HTML进行输出。但由于前后端分离的大规模兴起,PHP的市场开始被压缩。因为前端已经大量JS化了,SPA化了,不需要PHP做胶水了,最狠的是JS连客户端、服务器端都能写了,它才是胶水,不,是万金油。国内目前感受不明显,只是因为前端太贵、好前端又太少,导致很多企业没转过去、以及某信催生了H5的一大片市场。
更不用说mobile first大潮下,很多产品只有APP没有Web了(Web是APP下载的静态页面),这又是另一大块丢掉的市场。
这样PHP基本就只能从胶水层,退守API层了。
PHP以前做API的优势是不明显的,一个是性能不好(至少没现在好)、一个是缺乏对并发、实时通信(比如Websocket)的支持。为什么我觉得鸟哥主导的PHP7方向非常正确、为什么我推荐韩天峰的Swoole?因为这两个东西解决了最明显的问题,大大提高了PHP作为服务端的竞争力。
那么,作为PHP开发者,如何应对?我个人觉得比较清晰的路线有三条。
最明显的,把JS精通了,吃掉专业前端的市场(反正大部分专业前端也不那么专业🙃),把写HTML的活抢回来。这是表现层,你依然要面对客户端对页面端市场的蚕食。当然我是希望RN和Weex能再成功一些,尤其是Weex采用Vue语法,这样你投资学习Vue就等于就全客户端了。但目前这块依然是遍地坑的状态,要么等、要么填。
第二个路线,学学Java之类的,把PHP和其他语言产品混用,往架构层走。ELK是Java的、Hadoop是Java的、一堆大公司开源的好东西全TM是Java的。(FB倒是开源了PHP的phabricator,code hosting、review、wiki、task&bug方面的一站式平台,也非常好用,但在CI部分功能还是实验状态。推荐PHP团队去用用。)
往架构层走是不是一定要学Java呢?其实也未必,靠Docker和微服务也可以。但Docker是Go写的,大部分微服务框架要么是Go要么是Java。倒是韩天峰用Swoole做了一个纯PHP的微服务方案,会在第三届PHP大会上分享,这个就等学习完再评价。
但整体来讲,PHP如果从页面胶水,进化到服务胶水,会开辟一大片市场;同时也为各位PHPer从Form builder到架构师铺平道路。
第三个路线,就是学C进系统层。这个倒不是特别难,但除非你做云,不然把系统弄得门清只会让你转行成DevOPS。真正有意思的地方是PHP和其他服务和系统接口的地方。比如Apache扩展、比如Nginx扩展、比如PHP扩展、比如PHP本身。用C语言封装基础能力,然后把它提供给PHP,可以在性能和易用性两方面获得很好的平衡,同时推动PHP语言的发展。这方面例子很多,Yaf、Yar、Swoole都是好示范。
仔细想想,如果架构层是在协议上和其他语言混用;系统层则是在代码和链接库层次上和其他语言混用。这是PHP过去成功的胶水战略在新时代的延伸。毕竟,靠一门语言打天下的时代已经过去了。啊不,JS或许还有希望🙈 。
我个人是很喜欢PHP简单直接的实用主义风格的,也希望PHP能一直流行下去。
但坦率的讲,我认为PHP现在处于一个不进则退的位置(去看TIOBE的语言排行就清楚了,应该还有三到五年的机会期),要么大家齐心协力把它带到新时代(比如PHP7、比如Swoole、比如Laravel、比如PHP栈的持续集成解决方案、比如PHP栈的微服务解决方案、比如PHP的机器学习库、比如PHP的Tensorflow封装),要么一起跟着萎缩的市场从巅峰滑落,就像Delphi一样。哦,抱歉,可能你们没听说过Delphi。[摊手]
顺便回答几个问题:
Q:你说的都是对的么?
A:不一定是对的,只是我现在以为对。注意这只是一个产品经理对PHP市场的观察 😂
Q:这个对PHP的看法是不是过于悲观了?
A:是的,这是比较坏的一种可能。但我们要考虑历史的进程。互联网时代已经过去、后移动互联网时代已经来临。只有拥抱时代的语言能活得好。运气好的语言可以撞大运,运气不好的语言只能主动去拥抱。我不希望PHP的未来要靠运气,我希望我们这些PHP开发者主动去能推动它,去做一些基础但有价值的事情,而不是等着别人来做(最后别人做了,用其他的语言),毕竟我们是最了解市场和需求的人,是过去从PHP上获益最多的人,也是有望从PHP的光明未来中获益最多的人。
Q:是不是PHP就不能学了?现在的PHP开发者就找不到工作了?
A:我对现状还是很乐观的,PHP依然是学习门槛最低、离钱最近的、现在还在供需顶部的「最好的语言」,不放心的可以关注白熊趣闻录里边的每周薪资播报,那个是实时数据。我个人觉得PHP的高需求时代应该还有三到五年(国内可能更久)。我的建议不是不学PHP,而是不要光学PHP。
Q:这些东西太多了,学习成本太高,我光学PHP找不到工作么?
A:可以的,但你至少还要会复制粘贴HTML、CSS和JQuery吧,不然怎么建(做)站(外包)。即使是在胶水时代,我认识的那些只会PHP的人后来都,对不起,我不认识光会PHP的人,他们至少会PS。
Q:为什么你要在文章里边给白熊趣闻录和第三届PHP大会做广告?
A:因为我觉得这两件事儿挺有意思的。而且公司的产品和朋友的大会做好了,对我有好处,对大家也没坏处,就顺手推荐给大家了。所有付费的商业广告,我都会单独标明。但我一般都懒得接。
题图来自:goeshand@zcool
近期评论