
PHP从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js 、GO和Python不断地在挑战PHP的地位。这些技术的推动者非常热衷于唱衰PHP,PHP语言的未来在哪里?PHP程序员当如何应对未来的变革?
作为老牌的Web后端编程语言,PHP在全球市场占有率非常高,仅次于Java,从各个招聘网站的数据上来看PHP开发的职位非常多,薪资水平也非常不错。实际在中小企业、互联网创业公司PHP的市场地位是高于Java的。Java在超大型企业、传统软件行业、金融领域优势更大。目前来看 Node.js、 GO 、 Python 、 Ruby 等语言还难以企及PHP和Java。
PHP语言之所以能有今天的地位,得益于PHP语言设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP语言入门简单,容易掌握,程序健壮性好,不容易出现像Java 、 C++ 等其他语言那样复杂的问题,如内存泄漏和 Crash,跟踪调试相对轻松很多。
PHP官方提供的标准库非常强大,各种功能函数都能在官方的标准库中找到,包括MySQL、Memcache、Redis、GD图形库、CURL、XML、JSON等等,免除了开发者到处找库的烦恼。PHP 的文档非常棒,每个函数都有详细的说明和使用示例。第三方类库和工具、代码、项目也很丰富。开发者可以快速、高效地使用PHP编写开发各类软件。
到目前为止市面上仍然没有出现比PHP更简单易用的编程语言。所以PHP的前景还是很广阔的,与其纠结于编程语言的选择,不如好好地深入学习使用PHP 。
作为一个资深的PHP开发者,在技术上给各位PHP程序几点未来的建议,希望对大家有所帮助。
1. Composer
第一点就要提Composer,自从Composer出现后,PHP的依赖管理可以变得非常简单。程序内依赖一些类库和框架,直接使用Composer引入即可,通过使用composer update安装依赖的包。解决了过去加载外部库的各种难题。
Composer也有国内镜像,速度非常快。现在绝大部分PHP开源的项目都提供了Composer的支持,建议大家在项目中使 Composer来解决PHP代码包管理的问题,不要再使用下载源码、手工include的原始方法。
2. PHP7
PHP7版本对Zend引擎做了大量修改,大幅提升了PHP语言的性能,使用PHP7可以使你的程序性能瞬间翻倍。即使是WordPress这样重量级的软件运行在PHP7都能有上千QPS,相当于一台服务器每天就能处理8000万次请求。
使用PHP7,做好MySQL优化,使用Memcache和Redis进行加速,这套技术架构完全可以应对相当大规模的系统。除了某些亿级用户的平台之外,一般规模的系统完全没有压力。
3. PSR
PSR是PHPFramework Interop Group 组织制定的PHP语言开发规范,约定了很多方面的规则,如命名空间、类名规范、编码风格标准、Autoload、公共接口等。现在已经成为PHP技术社区事实上的标准了。很多知名的PHP框架和类库都遵守了PSR规范。PHP开发者应当学习掌握PSR规范,在开发程序时应当尽量遵循PSR规范。
4. Swoole
2017年PHP还局限于做Web网站吗?No,如果你还不知道Swoole,赶快去了解一下吧。Swoole的口号是重新定义PHP语言,Swoole是一个异步并行的通信引擎,作为PHP的扩展来运行。Node.js的异步回调Swoole有,Go语言的协程Swoole也有,这完全颠覆了对PHP的认知。使用Swoole PHP 可以实现常驻内存的Server程序,可以实现TCP、UDP异步网络通信的编程开发。
过去PHP只能做一个Web网站,现在使用Swoole可以做Java 、C++才能实现的通信服务,比如WebSocket即使通信、聊天、推送服务器、RPC远程调用服务、网关、代理、游戏服务器等。如果你想用PHP做点Web系统之外的东西,Swoole是最好的选择。
5. Laravel
最近几年最火热的PHP框架,官网号称是为Web艺术家设计的框架,可见这套框架有多优雅。Laravel提供的功能模块丰富,API设计简洁,表达力强。而且它的社区非常活跃,代码贡献者众多,第三方的插件非常多,生态系统相当繁荣。
Laravel底层使用了很多symfony2组件,通过composer实现了依赖管理。如果还在纠结使用什么PHP框架,不如选择 Laravel。Laravel提供的命令行工具基于symfony.console实现,功能强大,集成了各种项目管理、自动生成代码的功能。
6. Phar
PHP5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件。这个特性使得PHP也可以像Java一样方便地实现应用程序打包和组件化。一个应用程序可以打成一个Phar包,直接放到PHP-FPM中运行。
配合Swoole,可以在命令行下执行php server.phar 一键启动服务器。PHP的代码包可以用Phar打包成组件,放到Swoole的服务器容器中去加载执行。
来源:程序师
引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“左华栋”的评论
1. PHP生态里,有人用强类型,有人不用,你咋玩? 你指望那些大多培训出来的人会这个?2. 你把 laravel 支付的包写进swoole搞成异步 试试...
引用来自“eechen”的评论
strict_types=1无非就是约束了函数的参数和返回值的类型,类型对不上则返回一个Fatal error,所以说就算有人的封装的库使用类型约束,也不影响正常调用.你不会以为strict_types=1下所有PHP变量都要求声明类型吧,如果真是这样,你就太想当然了.我不用Laravel,没法测试你说的情况,也想不出你说的支付情况放到Swoole里会出现什么问题,与其让我猜,你为什么不仔细说说了,想忽悠谁呢?
引用来自“左华栋”的评论
实际情况就是现有的包都用不了。。。大改。那样的话,生态还不如node ...
所以php目前如果激进,生态不如node ,如果不激进,等死。。。
引用来自“eechen”的评论
好一个"现有的包都用不了",你昧着良心放大炮不怕被雷劈么?我现在的基于Swoole开发的项目就在使用phpmailer/htmlpurifier这等这些传统的PHP库,一个连Swoole都没用过Node.js粉叽叽喳喳振振有词的指点江山是不是太不要碧莲了呀?
引用来自“左华栋”的评论
为什么所有人都在骂你呢?我以前也是用php,觉得php7 swoole很牛逼,也很抵触node ,然后用了node 后,觉得php设计得真傻逼
引用来自“eechen”的评论
你骂我是你素质低,你骂PHP到底你是有多拽多牛逼.Node粉愈发得脑残了,而且十分浅薄,还以为自己有多高端,哈哈哈.
好歹我们用过php 做过4年多的开发,用node 才三个月,你觉得为什么一个php粉会转node 粉?
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没引用来自“eechen”的评论
呵呵,搞得好像你贡献了多少代码给Node.js似的.还有,我用Swoole根本不用框架,直接原生PHP+Swoole走起,你以为会像你们Node.js粉呀,不用框架就成了残废.
引用来自“左华栋”的评论
框架是为了协同,减少成本的,你也是人才,也没见你开源什么。。。引用来自“eechen”的评论
难道不用框架自己开发设计的代码架构和组织就不是框架了么?真是肤浅.你对社区贡献大,然而你的几分只有个位数,我的OSC积分至少是你的几千倍.
一个产品经理居然妄谈PHP垃圾,你这个产品经理的嘴呀,喷得都是粪么?
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没引用来自“eechen”的评论
呵呵,搞得好像你贡献了多少代码给Node.js似的.还有,我用Swoole根本不用框架,直接原生PHP+Swoole走起,你以为会像你们Node.js粉呀,不用框架就成了残废.
引用来自“左华栋”的评论
框架是为了协同,减少成本的,你也是人才,也没见你开源什么。。。你对社区贡献大,然而你的几分只有个位数,我的OSC积分至少是你的几千倍.
一个产品经理居然妄谈PHP垃圾,你这个产品经理的嘴呀,喷得都是粪么?
引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“左华栋”的评论
1. PHP生态里,有人用强类型,有人不用,你咋玩? 你指望那些大多培训出来的人会这个?2. 你把 laravel 支付的包写进swoole搞成异步 试试...
引用来自“eechen”的评论
strict_types=1无非就是约束了函数的参数和返回值的类型,类型对不上则返回一个Fatal error,所以说就算有人的封装的库使用类型约束,也不影响正常调用.你不会以为strict_types=1下所有PHP变量都要求声明类型吧,如果真是这样,你就太想当然了.我不用Laravel,没法测试你说的情况,也想不出你说的支付情况放到Swoole里会出现什么问题,与其让我猜,你为什么不仔细说说了,想忽悠谁呢?
引用来自“左华栋”的评论
实际情况就是现有的包都用不了。。。大改。那样的话,生态还不如node ...
所以php目前如果激进,生态不如node ,如果不激进,等死。。。
引用来自“eechen”的评论
好一个"现有的包都用不了",你昧着良心放大炮不怕被雷劈么?我现在的基于Swoole开发的项目就在使用phpmailer/htmlpurifier这等这些传统的PHP库,一个连Swoole都没用过Node.js粉叽叽喳喳振振有词的指点江山是不是太不要碧莲了呀?
引用来自“左华栋”的评论
为什么所有人都在骂你呢?我以前也是用php,觉得php7 swoole很牛逼,也很抵触node ,然后用了node 后,觉得php设计得真傻逼
Node粉愈发得脑残了,而且十分浅薄,还以为自己有多高端,哈哈哈.
引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“左华栋”的评论
1. PHP生态里,有人用强类型,有人不用,你咋玩? 你指望那些大多培训出来的人会这个?2. 你把 laravel 支付的包写进swoole搞成异步 试试...
引用来自“eechen”的评论
strict_types=1无非就是约束了函数的参数和返回值的类型,类型对不上则返回一个Fatal error,所以说就算有人的封装的库使用类型约束,也不影响正常调用.你不会以为strict_types=1下所有PHP变量都要求声明类型吧,如果真是这样,你就太想当然了.我不用Laravel,没法测试你说的情况,也想不出你说的支付情况放到Swoole里会出现什么问题,与其让我猜,你为什么不仔细说说了,想忽悠谁呢?
引用来自“左华栋”的评论
实际情况就是现有的包都用不了。。。大改。那样的话,生态还不如node ...
所以php目前如果激进,生态不如node ,如果不激进,等死。。。
引用来自“eechen”的评论
好一个"现有的包都用不了",你昧着良心放大炮不怕被雷劈么?我现在的基于Swoole开发的项目就在使用phpmailer/htmlpurifier这等这些传统的PHP库,一个连Swoole都没用过Node.js粉叽叽喳喳振振有词的指点江山是不是太不要碧莲了呀?
我以前也是用php,觉得php7 swoole很牛逼,也很抵触node ,然后用了node 后,觉得php设计得真傻逼
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没引用来自“eechen”的评论
呵呵,搞得好像你贡献了多少代码给Node.js似的.还有,我用Swoole根本不用框架,直接原生PHP+Swoole走起,你以为会像你们Node.js粉呀,不用框架就成了残废.
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没引用来自“靠谱的傻梦兽”的评论
同感引用来自“高久峰”的评论
没事,谁骂php了就喊他,负责嘴遁维护php地位,这是他的主要工作。指望贡献代码。额……引用来自“eechen”的评论
来来来,请这个大神说说自己都给dotNET core共享了多少代码.我看不会连Windows Server,SQL Server,Visual Studio都是盗版的吧.
笑死人的软粉.
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没引用来自“靠谱的傻梦兽”的评论
同感引用来自“高久峰”的评论
没事,谁骂php了就喊他,负责嘴遁维护php地位,这是他的主要工作。指望贡献代码。额……我看不会连Windows Server,SQL Server,Visual Studio都是盗版的吧.
笑死人的软粉.
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没还有,我用Swoole根本不用框架,直接原生PHP+Swoole走起,你以为会像你们Node.js粉呀,不用框架就成了残废.
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“Koma”的评论
请贴出你的操作来打我脸 😄首先,调试时长受request_terminate_timeout和max_execution_time这些超时配置影响.
其次,在远程调试过程中,默认监听9000端口的IDE作为服务器,xdebug作为客户端,由xdebug主动连接IDE.
所以,你得保证你IDE所在的环境,没有其他应用占用9000端口.
最后,当然是需要正确配置xdebug:
xdebug.remote_enable = On
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_mode = req
xdebug.remote_port = 9009
xdebug.remote_log = /path/to/xdebug.log
你敢直播吃粪我甚至可以录个NetBeans通过xdebug断点调试PHP程序的视频让你看.
当然了,像你这种喷子,肯定也是不知道,xdebug除了配合IDE的远程调试,还支持手动调试的:
配置:
xdebug.auto_trace = Off
xdebug.trace_enable_trigger = On
触发:
xdebug_start_trace();
// 目标代码区间,比如一个函数
xdebug_stop_trace();
引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“左华栋”的评论
1. PHP生态里,有人用强类型,有人不用,你咋玩? 你指望那些大多培训出来的人会这个?2. 你把 laravel 支付的包写进swoole搞成异步 试试...
引用来自“eechen”的评论
strict_types=1无非就是约束了函数的参数和返回值的类型,类型对不上则返回一个Fatal error,所以说就算有人的封装的库使用类型约束,也不影响正常调用.你不会以为strict_types=1下所有PHP变量都要求声明类型吧,如果真是这样,你就太想当然了.我不用Laravel,没法测试你说的情况,也想不出你说的支付情况放到Swoole里会出现什么问题,与其让我猜,你为什么不仔细说说了,想忽悠谁呢?
引用来自“左华栋”的评论
实际情况就是现有的包都用不了。。。大改。那样的话,生态还不如node ...
所以php目前如果激进,生态不如node ,如果不激进,等死。。。
我现在的基于Swoole开发的项目就在使用phpmailer/htmlpurifier这等这些传统的PHP库,一个连Swoole都没用过Node.js粉叽叽喳喳振振有词的指点江山是不是太不要碧莲了呀?
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“左华栋”的评论
eechen 你要是真牛逼,去给 swoft 项目贡献代码看看,别整天当嘴炮,一个php贡献都没引用来自“靠谱的傻梦兽”的评论
同感引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“吾爱”的评论
用了swoole坑坑绊绊写了两个星期实现的长连接服务,最后花了3天用go重写,踩坑踩到吐血引用来自“eechen”的评论
来来来,都说说你踩了哪些坑,让大家吸取下教训.不要一笔带过信口开河嘛.
引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“左华栋”的评论
1. PHP生态里,有人用强类型,有人不用,你咋玩? 你指望那些大多培训出来的人会这个?2. 你把 laravel 支付的包写进swoole搞成异步 试试...
引用来自“eechen”的评论
strict_types=1无非就是约束了函数的参数和返回值的类型,类型对不上则返回一个Fatal error,所以说就算有人的封装的库使用类型约束,也不影响正常调用.你不会以为strict_types=1下所有PHP变量都要求声明类型吧,如果真是这样,你就太想当然了.我不用Laravel,没法测试你说的情况,也想不出你说的支付情况放到Swoole里会出现什么问题,与其让我猜,你为什么不仔细说说了,想忽悠谁呢?
那样的话,生态还不如node ...
所以php目前如果激进,生态不如node ,如果不激进,等死。。。
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“eechen”的评论
与其质疑xdebug,我建议你还是质疑PHPStorm或者你自己更靠谱些.引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“Koma”的评论
我只想说一句,xdebug 结合 ps 打断点,跑十次能卡住5次算我输 😄引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“左华栋”的评论
1. PHP生态里,有人用强类型,有人不用,你咋玩? 你指望那些大多培训出来的人会这个?2. 你把 laravel 支付的包写进swoole搞成异步 试试...
我不用Laravel,没法测试你说的情况,也想不出你说的支付情况放到Swoole里会出现什么问题,与其让我猜,你为什么不仔细说说了,想忽悠谁呢?
引用来自“吾爱”的评论
用了swoole坑坑绊绊写了两个星期实现的长连接服务,最后花了3天用go重写,踩坑踩到吐血不要一笔带过信口开河嘛.
引用来自“incess”的评论
或许 PHP还需要一次大的变革才能再次火起来。引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHP引用来自“eechen”的评论
胡说八道.PHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
2. 你把 laravel 支付的包写进swoole搞成异步 试试...
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“honey_fansy”的评论
别说你对Spring一无所知,就连Java你也是一无所知,不要在自己不了解的领域讨论缺点引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“eechen”的评论
说得好,Xdebug确实强,连官方的ZendDebugger基本都退位让贤了.Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
PHP 缺省有很多令人不满意的地方, 但是还没有哪个语言能兼顾 WEB 便捷开发且弥补那些诟病.
引用来自“OSC_AfvLeU”的评论
把laravel换成yii2吧引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。引用来自“志田未来”的评论
哪里10年是混出来的1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
Java之前正是太过于以来多线程,所以像Spring这些基于Java多线程的框架,基本没法放到Vert.x这种异步引擎里跑.
但PHP就不同了,很多人都尝试过在Swoole里跑Laravel等框架来提升性能,比如:
Laravoole, LaravelFly, Stone
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。1.PHP 不支持线程是优势! 协程是未来, Golang 协程语言级别处理调度,内部可以是多线程但是用户不用关心,而传统的 Java/Python/Ruby 是不可能实现 Golang 这种协程,除非放弃已经存在的线程,协程也只能引入难用的 async/await,PHP 不支持线程,官方完全可以在语言级别实现 Golang 这种协程,PHP 还有无线想象....
2.xdebug 哪里不稳定?具体说说,让我教教你啊,自己不行别怪别的
引用来自“左华栋”的评论
PHP 会面临两个挑战,一是异步和传统写法不兼容,面临新的生态问题。二是强类型导致新的生态问题。 这两个问题来看,我并不看好PHPPHP7引入的强类型默认不开启,以后也不会默认开启,要开启需要手动在文件开头加入:
declare(strict_types=1);
还有,异步怎么就和传统写法不兼容了?
难道我基于Swoole开发的项目就不能使用传统的库如phpmailer了?
没用过没深入了解过,就不要大放厥词了.
Swoole的运行模式一点都不特别,本质就是一个php-cli服务.
如果有人开发了一个工具库,这个工具库却不能跑在php-cli下,那才叫奇葩.
在Web应用级别,最大的区别无非就是php-fpm里的超全局变量
$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_FILES
需要切换到Swoole提供的:
$req->server,$req->cookie,$req->get,$req->post,$req->files
注意,Swoole没有对应的$_SESSION实现.
另外,Swoole是一个php-cli后台常驻的服务,所以:
Swoole中,全局变量/静态变量跨请求(跟PHP-FPM不同),但不跨进程(跟PHP-FPM相同).
所以全局数组$app应该这样存储用户信息: $app[$fd]['user']
其中$fd是连接编号,在一个Swoole服务里,是唯一的.
引用来自“lcccd”的评论
十年PHPer告诉你,两个大的缺陷,让我切换到JAVA。1、原生支持的多线程;2、断点调试。1虽然目前有第三方支持,但是原生缺失,造成无法兼容;2虽然有个第三方的debug工具,功能弱不说 不稳定常常卡不住点,这对于做移动服务端的非常烦躁! 最终改用了JAVA开发,也就花了一天时间,发现PHP和JAVA基本上80%都是一样的。应该优劣并举,把选择留给读者!
引用来自“红薯”的评论
我们不一样引用来自“红薯”的评论
我们不一样引用来自“红薯”的评论
我们不一样