PHP暂还不全力支持像Java那般JIT运转时校对领涨板块标识符(预览:PHP8早已正式宣布重新加入JIT全力支持),但PHP具备opcache监督机制,能把JAVA相关联的opcode缓存在缓存,PHP7中还全力支持实用性opcache.file_cache求出opcode到文档.伺服器端的Facebook HHVM也全力支持JIT.除此之外PHP非官方如前所述LLVM紧紧围绕opcache监督机制构筑的Zend JIT组成部分也早已开始合作开发试验中.在php-src/Zend/bench.php试验表明,PHP JIT组成部分速率是PHP 5.4的10倍.

PHP的库来用C同时实现,而Java核心理念运转时C#(jdk/jre/lib/rt.jar,小于60MB)用Java撰写(jdk/src.zip), 因此Java应用领域运转的这时候,使用者撰写的标识符和提及的C#和架构都要在JVM上说明继续执行. Java的HotSpot监督机制,直至有方式被继续执行10000次(-XX:CompileThreshold=10000)才会促发JIT校对, 在此之后运转在说明商业模式下,以防止出现JIT校对耗费的天数比方式说明继续执行耗用的天数更要多的情形.
PHP内建模版发动机,另一方面是模版词汇.而Java Web须要采用JSP罐子如Tomcat或伺服器端模版发动机.
PHP内建HTTP伺服器和SQLite资料库,和Apache组件同时实现libphp.so和FastCGI服务项目PHP-FPM.而Java Web合作开发时两极化须要采用伺服器端的Servlet罐子Tomcat等.
PHP-FPM跟Nginx那样,是多民主化的构架,worker民主化处置允诺,master民主化不处置允诺,只负责管理保护worker民主化,比如说定量分析重新启动,崩盘重新启动等.PHP-FPM全力支持民主化池的特性,不同民主化池相互隔离,互不影响.比如说你可以实用性一个监听9000端口的民主化池www和一个监听9001的民主化池io来分离IO密集JAVA:
也是说,PHP通过多民主化利用多核同时实现并发,而Java两极化通过多线程同时实现并发,因为一个JVM实例是一个民主化.
除此之外,PHP也可以运转在多线程商业模式下,比如说Apache的event MPM和Facebook的HHVM都是多线程构架.不管是多民主化还是多线程的PHP Web运转商业模式,都不须要PHP合作开发者关心和控制,也是说PHP合作开发者不须要写标识符参与民主化和线程的管理,这些都由PHP-FPM/HHVM/Apache同时实现.
PHP-FPM民主化管理和并发同时实现并不须要PHP合作开发者关心,而Java多线程编程须要Java合作开发者编码参与.PHP一个worker民主化崩盘,master民主化会自动新建一个新的worker民主化,并不会导致PHP服务项目崩盘.而Java多线程编程稍有不慎(比如说没有捕获异常)就会导致JVM崩盘退出.
对于PHP-FPM和Apache MOD_PHP来说,服务项目民主化常驻缓存,但一次允诺释放一次资源,这种缓存释放非常彻底. PHP如前所述提及计数的GC甚至都还没发挥作用程序就早已结束了. 而且,在PHPJAVA中用unset显式释放内存也是立竿见影的,不会有延时.而Java的缓存回收严重依赖GC监督机制,高并发下的Full GC会导致Java服务项目雪崩:JVM忙于用GC回收缓存无法处置允诺,而新允诺又源源不断地到来.
PHP的运转商业模式决定了PHP天然全力支持热部署,而Java要同时实现热部署并不容易.这也是为什么在虚拟主机托管环境里PHP占绝对优势的原因,因为合作开发者通过FTP上传PHP文档到虚拟空间就同时实现了标识符预览和部署.
PHP跨民主化共享数据,除了采用如前所述文档的session监督机制和鸟哥合作开发的无锁共享缓存缓存扩展Yac.Linux上还可以采用缓存文档系统(tmpfs)上的SQLite(如/dev/shm/data.sqlite3).而Java程序的生命周期随JVM常驻缓存,线程可以访问共享数据.
PHP不存在资料库访问速率比Java慢的问题.PHP的资料库驱动如mysqlnd等都是C同时实现的驱动,而Java的资料库驱动JDBC是Java同时实现的驱动,PHP的驱动性能并不吃亏.而且PHP同样全力支持资料库持久连接,也是多个允诺能复用一个资料库连接,并不须要每个允诺都打开一个资料库连接.比如说下图是两个PHP-FPM工作民主化跟MySQL保持的两个长连接:

PHP跟Java都诞生于1995年,没有PHP相对Java是后起之秀的说法,反倒是PHP一开始是用作Web合作开发,而Java不是.Java的前身Oak词汇,是为了嵌入式软件合作开发而设计.
C同时实现的PHP后来吸收了C++的对象编程思想,重新加入了对象编程全力支持.既可以用过程式,也可以用对象,更灵活.而Java必须完全面向对象编程,甚至更要把类名和文档名挂钩.
PHP能不能合作开发大型应用领域,取决于采用者是否因地制宜地采用PHP. 比如说,PHP就不适合用来合作开发资料库发动机(大多都是C/C++同时实现)等计算密集型应用领域.Java在计算密集型应用领域上相比PHP更有优势,比如说HBase资料库采用了Java同时实现.不过大多数Web应用领域都是I/O密集型应用领域,这里面包括网络I/O,文档系统I/O,资料库I/O.
PHP是C同时实现的Web加速合作开发架构,不依赖伺服器端架构也能同时实现加速合作开发.而Java Web合作开发两极化依赖Spring等伺服器端架构.
补充:
资料库持久连接很容易用,mysqli里host参数传递p:127.0.0.1就能开启持久连接,pdo_mysql里把PDO::ATTR_PERSISTENT设为true也可以开启持久连接.而且PHP的资料库持久连接也不依赖PHP-FPM,我的截图不过是举例说明,其实用Apache也那样可以.只是PHP-FPM的民主化数或者Apache民主化/线程数最好实用性为固定数量,而且要求数量不能超过MySQL最大连接数(max_connections默认是151).
民主化间共享数据,除了Yac,我不是还说了Linux缓存文档系统tmpfs上的SQLite么?SQLite的锁监督机制够用了呀,连事务都全力支持,你担心什么?而且缓存上也不须要担心SQLite的读写性能限制,完全是SQLite发动机在缓存上的计算密集操作.能利用Linux的tmpfs监督机制,能利用SQLite的锁监督机制,而不依赖PHP同时实现,我觉得很有优势很稳定.
这里讨论的不是Swoole这类CLI下同时实现的PHP服务项目,而是PHP传统的FastCGI商业模式.长天数后台常驻运转的PHPJAVA,当然须要GC.对于一些要求实时的高并发应用领域,我觉得就不应该采用GC监督机制.PHP可以实用性zend.enable_gc=off来禁用GC,并且自己通过unset来手动释放缓存.不过运转在FastCGI下的PHPJAVA生命周期很短,其实本来就不依赖GC.再次强调,高并发实时类应用领域,GC绝不是一个优势,而是一个劣势.
PHP常见的SAPI有这么几种:
php(cli,cli-server)
php-cgi(cgi-fcgi)
php-fpm/hhvm(fpm-fcgi)
libphp7.so/php7apache2_4.dll(apache2handler)
fpm-fcgi和apache2handler下,无论是多民主化商业模式还是多线程商业模式,民主化和线程的同时实现和管理都不须要PHP合作开发者关心(这是优势),而是由php-fpm/hhvm/apache同时实现.PHP合作开发者如果要参与多民主化或多线程编程,完全可以在php-cli下同时实现,相关PECL扩展包括pcntl多民主化,pthreads多线程,libevent事件驱动等等,相关的项目同时实现有WorkerMan.除此之外峰哥的Swoole也须要用php-cli跑,但其服务项目的民主化和线程控制也是由Swoole同时实现而不太须要PHP合作开发者关心.PHP从5.4内建的单民主化HTTP伺服器,目的是用作加速的合作开发和试验,我觉得是一个很方便的工具,合作开发者不须要安装和实用性Apache或者Nginx之类Web伺服器就能进行入门合作开发.而且把PHP说明器交叉校对到Android手机或者OpenWRT无线路由就能用PHP这个省资源的HTTP伺服器在局域网内编程并提供服务项目,很方便.
JIT在大量计算上有优势,bench.phpJAVA是用来试验计算性能.真实应用领域如WordPress等,JIT能带来的性能提升肯定不会这么明显,具备JIT监督机制的HHVM和没有JIT的PHP7,在压力试验WordPress时体现出同一水平,就说明了这个问题.而且我强调过,Web应用领域大多是I/O密集型应用领域,校对型词汇不会在I/O密集型应用领域里也具备数量级的优势.因此说,对于大多数PHP合作开发者来说,就算是没有JIT监督机制的PHP7,性能也够用了.
试验程序PunBB是一个MySQL驱动的PHP轻量级论坛.
用siege并发10,压测1分钟,PHP-FPM工作民主化的缓存(RES)都是13.4MB,并不存在你所谓的PHP-FPM缓存占用会不断随允诺数量而增长的问题,有图有真相:
