1. php 的 opcache 和最近的 php jit 有什么区别
opcache是用来缓存php在运行中代码生成的opcode。
php jit是php新的编译器,部署php代码的时候需要提前把源码编译成机器能识别的识别码。
目前php社区正权力开发JIT,目前已有Php jit版本。据说php8将完全支持php jit
2. 关于PHP5与PHP7的若干问题
一、
1、在Zend引擎和扩展中,经常要创建一个PHP的变量,底层就是一个zval指针。之前的版本都是通过MAKE_STD_ZVAL动态的从堆上分配一个zval内存。而PHP7可以直接使用栈内存。PHP代码中创建的变量也进行了优化,PHP7直接在栈内存上预分配zval。这样节约了大量内存分配和内存管理的操作。
2、zend_string存储hash值,array查询不再需要重复计算hash
3、PHP5的hashtable每个元素都是一个
Bucket
*,而PHP7直接存Bucket,减少了内存申请次数,提升了Cache命中率和内存访问速度。
4、PHP的C扩展函数与PHP中的变量进行参数输入时,要使用zend_parse_parameters()函数,这个函数根据一个字符串参数找到对应PHP的zval指针,然后进行赋值。
这个函数实际上有一定的性能消耗。PHP7直接使用宏替换了zend_parse_parameters函数,C扩展中不再需要使用zend_parse_parameters进行逐个参数的查找,宏展开后自动会实现参数赋值。仅此一项就提升了5%的性能。
5、很多PHP程序中会大量使用call_user_function,
is_int/string/array,
strlen
,
defined
函数。PHP5
都是以扩展函数的方式提供,PHP7中这4类函数改成ZendVM的OPCODE指令,执行更快。
除了上面5个主要优化点之外,PHP7还有其他更多的细节性能优化。如基础类型int、float、bool等改为直接进行值拷贝,排序算法改进,PCRE
with
JIT,execute_data和opline使用全局寄存器等等。PHP7对性能的优化会继续进行下去。
二、有一群人,
创建了一个PHP6的项目,
主要的目的是为PHP引擎增加Unicode支持.
当时开发者们同时维护5和6的开发,
慢慢的大家发现新功能都等着提交给6,
而6因为开发速度慢,
导致很多新特性没法提交,
状态很不理想.
再后来6就没人开发了
三、不太了解、我只用git下的php7主干代码
3. php里说出数组的常用函数及用法
PHP常用操作数组的函数
变量和数组的转换
compact() 将变量整合成数组
extract() 将数组中的每个值以键的名分解成变量
变量和字符串转换
explode() 以某个子串分解字符串成数组
implode() 将一维数组根据某个符号拼接成字符串
数组与数组之间关系
array_merge() 合并/并集
array_diff() 差集
array_intersect() 交集
数组值的操作
array_pop() 删除(弹出)数组最后一个值
array_push() 向数组中追加一个值
判断数组是否存在数组中
in_array() 判断一个值是否存在数组中
array_key_exists() 判断键是否存在数组中
数组去重
array_unique() 数组去重
获取二维数组中的值的集合
array_column() 获取二维数组中的值的集合
提取数组的键与值
array_values 提取数组的值构成一维数组
array_keys 提取数组的键构成一维数组
返回数组中的随机的键
array_rand() 返回数组中的随机的键
返回数组中值的数量
count() 返回数组中值的和
查询数组中的值
array_search() 查询数组中的值是否存在/in_array()有点相似
排序
sort() 排序有很多种,按键或值升降序
array_multisort() 多维数组排序
分割数组
array_chunk()
4. php和java的区别是什么
首先从概念上区分,Java是一门面向对象编程语言,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特性;PHP是一种通用开源脚本语言,语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛。
其次从学习难易程度上区分,PHP比Java简单很多。Java对学历有要求,本科及以上学历的人群比较适合学Java、也能学会Java。而PHP的学历要求比较低,大专、初高中学历的人群也是可以学会PHP的。
第三从应用领域上区分,PHP主要是应用在网站方面,它适合快速开发,中小型应用系统,开发成本低,有什么变动也能及时调整。而Java的应用领域要广泛的多,因为Java有完善的框架,在多线程、高并发方面有着较好的稳定性,所以在网站、嵌入式领域、金融行业服务器、安卓应用等领域都需要Java开发人才。
最后从发展前景上区分,如果你以后想专注于WEB领域的发展,那么学PHP就够用了,而Java适用于大型系统,如果你不打算只做web就需要学Java了。职友集上统计的北京PHP开发的平均薪资为19260元每月,Java开发20440元每月,不论PHP还是Java前景都很不错。
5. php的作用
PHP是一种简单的,面向对象的,解释型的,健壮的,安全的,性能非常之高的,独立于架构的,可移植的,动态的脚本语言。PHP具有和JAVA类似的Class关键字。因为不需要虚拟机,以致速度比JAVA快5倍。PHP
正迅速变成一种标准的,多用途的,面向对象的脚本语言。PHP不仅可用来开发Web应用程序,也可以开发普通应用程序。
PHP是一种功能强大的脚本语言。PHP将击败PERL/Python并取而代之。PHP是下一代的PERL/Python脚本。PHP可以胜任任何PERL/Python做的工作,并且做的更多,更好,更简洁!!
PHP是Hypertext
Pre-Processor(超文本预处理器)的缩写,它是一种服务器端的HTML脚本/编程语言。PHP语法上与C相似,可运行在Apache,
Netscape/iPlanet, 和 Microsoft IIS Web 服务器上。PHP作为一种工具,
可以让你创建动态的Web页面。应用PHP的网页与常规的HTML页面并无二致,你可以用同样的方式来创建、编辑它们。PHP允许你直接在HTML文件里写入简单的脚本,这一点与javascript非常相似。而不同的是,PHP不依赖于浏览器,是服务器端的语言,而javascript却是一种客户端的嵌在HTML中的语言。概念上,PHP与Netscape
的LiveWire Pro产品,Microsoft的ASP以及SunMicrosystem 的JSP相似。
PHP不仅可以用来创建Web应用程序,也可以用来开发普通的单机应用程序。
PHP的强劲之处在于:
·PHP是一项最优秀的技术。其它技术,如PERL,Python, Tcl, VB script, ASP 相对来说,都是陈旧低劣
的。即使是Java/JSP,也在PHP之下。
·开放源码
·广泛的数据库连接
·大量的扩展库
·作为一种多用途的脚本语言,比PERL,VB script, ASP, JSP都要优秀。
为什么选择PHP?因为PHP是最好的,原因如下:
·PERL“味道不好”,因为其程序不易阅读和维护,且不是面向对象的。把PERL忘了,转向PHP吧。PERL程序员将抛弃PERL,因为他们爱上了PHP!
PHP实际上就是“现代版的PERL”,只是名称不同而已。
·Java
是面向对象的,但速度很慢。Java程序远行起来很慢,对它唯一的抱怨就是——“Java,真是慢的糟糕”。而且十分复杂(具有许多层,如JVM,JIT
等等)。这往往诱发问题。既然有了Linux,为什么还要Java 呢?
·Python“不错”,但没有C语言中的括号和大括号,而这在vi编辑器中对操控代码非常有用。如果不能利用vi/emacs编辑器搜索括号/大括号的命令迅速操控代码,那么就好象断了手一样。PHP在技术上比Python更加先进。
·PHP是最好的,因为它面向对象,并且吸收了C/C++/Java/PERL的精华。PHP可以替代PERL,Python, Java,C,
C++, awk, Unix shell 脚本,Visual Basic 和其它语言!!
PHP直接运行,而且是由C写成的。
·每一个电脑程序员都知道PHP是最好的,不信问一下你旁边的程序员。
·只有PHP才能称雄于21世纪、22世纪以及更远的将来。
·为什么我们认为PERL,Python和Java程序员会将归附PHP,这里有一个很重要的原因。
以前,世界上许多公司都把PHP当作是一个“高度机密,严格保密”的电脑程序语言,但是现在它已经变成最为着名的,在Web,
Internet, E-commerce以及
B2B等诸多项目上应用最广泛的面向对象的脚本语言。即使是在今天,仍有许多竞争性(competing)公司把PHP当作是高度机密的东西,决不向外界(竞争对手)透露半点。
PHP将如同暴风雨一般席卷整个世界,IT工业将为之震惊。PHP的力量在于它是跨平台的,可以运行在任何地方。如Linux,Windows
95/98/NT/2000/XP, Solaris, HPUX
以及各种UNIX。PHP只需写一次,就可以配置在任何地方。PHP可以运行在Apache,Microsoft IIS等多种Web服务器上。
PHP比Java快5到20倍!!实际的比较测试显示,PHP的运行速度是Java3.7倍左右。PHP太容易使用了,你可以用它在非常短的时间里,非常迅速的开发出非常复杂的web,e-commerce和一般的单机应用程序。(在将来,PHP将会模仿Java大多数的功能,相信Java程序员也会喜欢上它。PHP将包含Java中的关键字,如class,extends,interface,
implements, public,protected, private 等等等等。)
PHP具有面向对象特性,它吸收了Java, C++, PERL
和C的最优秀的部分。PHP可以说是所有脚本/编程语言中的宝石。不久,它就会成为全世界程序员的“麦加圣地”。PHP即可以运行在Window95/NT/2000/XP上,也可以运行在各种UNIX上。
们将大吃一惊——PHP极有可能成为21世纪的电脑编程语言。
可以使用Zend Optimizer对PHP进行编译和优化,从而使它运行的更快。PHP4.0中已经集成了Zend Optimizer。
首先,你在开发、测试、除错过程中,用PHP脚本语言编写你的应用程序。一旦项目完成,你便可以用Zend编译器,将PHP文件编译成运行速度更快的可执行程序。