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文件編譯成運行速度更快的可執行程序。