首先说一下我自己的情况。用了 PHP 4 、 5 年了吧。一直觉的 PHP 还是比较不错的语言。可能是我做的项目都比较业务化,没有用到太多的底层和高深的技巧。所以,也没有遇到太多 PHP 的坑。
我想没有一门语言是万能的。就如同没有一个系统架构是适合全部应用场景的。有些情况下 PHP 对于我来说可能是目前最合适的工具语言。(平日也写写 Python )
昨日, PHP7 正式发布了。看到大家对这个事情反应大相径庭。「内核恐慌」中也经常拿 PHP 当个梗儿来提及。最近周围不少朋友都转了 Nodejs react 或者 Python 等等。难道 PHP 的社区开始日落西山了?
我是个比较恋旧的人。不知道大家对这个事情怎么想?
其实,就是想听听大家在自己实际的项目中,因为 PHP 语言或者框架,都遇到过哪些坑,最好是有具体的项目结合而不是就语言而语言谈。
希望能够听到大家的声音。
谢谢
一个普通的 PHPer
1
oott123 2015-12-03 11:12:43 +08:00 via Android
消息推送
异步 数据库连接池 |
3
tabris17 2015-12-03 11:36:32 +08:00
上下文环境无法跨请求,当然这是劣势也是优势
|
5
xujif 2015-12-03 11:54:26 +08:00
@loserwn 简单说就是 php 一个请求一个上下文,没有真正意义上的 [全局] 变量。也没有真正意义上的单例、线程池。所有的东西都不能缓存。
|
7
xujif 2015-12-03 12:03:24 +08:00 1
@loserwn web 程序从运行状态分两种。
application deployed in web server application run as web server 只要是后者,基本都没有这个问题。如果是前者,也不一定有这个问题,主要是看 web 程序是否常驻内存。 php 这个也不能说缺点,至少避免了内存泄露等问题。 |
8
Zzzzzzzzz 2015-12-03 12:08:30 +08:00
补两条.
作为一门自带电池的跨平台语言, 又没封装 pcntl 之类的具体平台相关实现. 如果没靠谱的代码发布流程和编码规范, 那作为卖点的在线热修改很容易成为地雷. |
10
flowerains 2015-12-03 12:13:13 +08:00
php 写了 3 年了,还真没有遇到迈不过去的坎,而且上手容易,就算是没写过 php 的人也能很容易的入门。
最近在研究 ruby,想尝试尝试不同的脚本语言 然而生产环境我还是选择 php |
11
xuxu 2015-12-03 12:14:46 +08:00 1
除了上面说的 我的理解:
1. 钱少事多 2. 装逼不够用 3. 优点也是缺点 |
12
lyragosa 2015-12-03 13:00:26 +08:00
你们器材党有完没完啊!
|
13
powtop 2015-12-03 13:15:38 +08:00
开发者多,好招,易于产品快速迭代,不怕招不到人 即使在的情况下 n
|
14
k9982874 2015-12-03 13:23:02 +08:00
上下文环境无法跨请求。一开始接触 PHP 是比较蛋疼的事,后来觉的也不错,就是觉得数据运行前要全部重装载一次有点蛋疼。
全局变量。进程内 PHP 有 define 和 global 关键字,全局变量根本不是问题。 跨进程的数据共享,数据缓存。有 memcached ,基本无痛。 线程池。对于 PHP 来说就像问 linux 下多线程与多进程的优劣一样。当创建进程的开销和创建线程的开销差不多时,讨论线程和进程的优劣没啥意义。线程访问数据方便点,进程用完销毁对内存友好点。 V 站很多 PYTHON , NODE.JS 优越党,但是无论怎么嘲讽 PHP 也改变不了 PHP 还是主流开发语言的事实。 虽然现在很多站开始像 NODE 倾斜,但是真正要替换 PHP 个人认为还是不可能的。 另外,个人觉得编程这个事是要有一定的沉积的, PHP 的用户群大部分可能是从 JAVA 和 C/C++来的。 NODE 大部分是从写页面的 JS 程序来的。 就像 2 、 3 年前做页游的很多都是之前做 FLASH 动画,学了几天 AS 就说自己是程序员一样。一门语言的用户群决定了一门语言的生死存亡。只要社区大神不放弃 PHP ,也就不担心什么。 最后撸主喜欢啥就用啥,不必过多考虑。 |
15
loserwn OP |
16
shiny 2015-12-03 14:38:07 +08:00
nodejs express 、 ruby sinatra 、 ROR 、 python 的 django 、 flask 、 tornado 都拿来写过项目,最后发现还是 PHP 省心点
|
17
Zzzzzzzzz 2015-12-03 15:16:23 +08:00
@loserwn
我理解的其他人说的全局的变量和 @k9982874 指的 global/define 应该指的不是同一件事. 举个例子 比如一个系统有一些设置很少变, 其他语言都可以在启动相应的容器 server 的时候获取这个变量, 每次请求都可以访问这个变量而不用再读取, 涉及到变化的话可以 subscribe zmq 或者 redis 之类的中间件进行推送通知. 而除了 swoole 这类以外常规的 php 运行模式要么是每次获取都从 db 或者 memcached/redis 之类的缓存中间件读, 要么借助 shm/xcache(opcache 和后期版本的 eaccelerator 不行吧)进行本地缓存, 每次获取还得反序列化. |
18
ethego 2015-12-03 15:35:02 +08:00
php 没法保存状态,需要依靠外部( mysql , redis )来做这些
|