您好,登錄后才能下訂單哦!
本篇內容介紹了“PHP擴展模塊opcode的安裝方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Opdumper
安裝
Opdumper的源碼已經托管在github上,其地址為:https://github.com/ericzhang-cn/opdumper。可以通過以下命令克隆源代碼:
git clone https://github.com/ericzhang-cn/opdumper.git
Opdumper是一個標準的PHP Extension,安裝方法如下:
首先將Opdumper源碼放到PHP源碼包的ext/opdumper目錄下,進入此目錄執行如下命令:
phpize ./configure make make install
然后在php.ini中添加一行配置:
extension=opdumper.so
目前opdumper支持PHP>=5.3,在Linux和MacOS下測試通過,Windows下未做測試。
CLI API
Opdumper支持類似vld的命令行方式輸出opcode,只需在執行php命令時通過-d參數將opdumper.active=1傳入。例如我們有一個foo.php:
<?php $a = 'hello'; echo $a; ?>
執行如下命令:
php -d opdumper.active=1 foo.php
結果如下:
PHP_FUNCTION API
Opdumper還支持vld不支持的PHP_FUNCTION API,Opdumper提供了兩個PHP函數:od_dump_opcodes_string和od_dump_opcodes_file。前者接受一個字符串作為產生,字符串是一段PHP代碼;后者接受一個PHP文件作為參數,返回值均是一個存有opcode結果的PHP數組。以od_dump_opcodes_file為例,我們在foo.php同一目錄下再寫一個bar.php:
<?php $opcodes = od_dump_opcodes_file('./foo.php'); var_dump($opcodes); ?>
執行結果如下:
array(3) { [0]=> array(8) { ["lineno"]=> int(2) ["opcode"]=> string(11) "ZEND_ASSIGN" ["op1_type"]=> string(2) "CV" ["op2_type"]=> string(5) "CONST" ["result_type"]=> string(0) "" ["op1"]=> string(2) "~0" ["op2"]=> string(5) "hello" ["result"]=> string(0) "" } [1]=> array(8) { ["lineno"]=> int(3) ["opcode"]=> string(9) "ZEND_ECHO" ["op1_type"]=> string(2) "CV" ["op2_type"]=> string(6) "UNUSED" ["result_type"]=> string(6) "UNUSED" ["op1"]=> string(2) "~0" ["op2"]=> string(6) "UNUSED" ["result"]=> string(6) "UNUSED" } [2]=> array(8) { ["lineno"]=> int(5) ["opcode"]=> string(11) "ZEND_RETURN" ["op1_type"]=> string(5) "CONST" ["op2_type"]=> string(6) "UNUSED" ["result_type"]=> string(6) "UNUSED" ["op1"]=> string(1) "1" ["op2"]=> string(6) "UNUSED" ["result"]=> string(6) "UNUSED" } }
Opdumper的Web服務:Opcode Dumper
坦白說,安裝PHP模塊還是挺麻煩的。所以為了方便朋友們查看opcode,我為Opdumper搭建了一個在線Web服務:http://supercompiler.com/app/opcode_dumper。
Web頁面訪問
只要訪問這個頁面,在編輯框中輸入或粘貼進PHP代碼,就可以快速看到相應的opcode:
同時,也可以將結果下載到本地(CSV文件格式)。
HTTP API方式訪問
您可以通過訪問如下API獲取PHP代碼的opcode:
URI: http://supercompiler.com/api/dump_opcodes
Method: POST
Params: php_script=[您的PHP代碼]
返回值為JSON格式,成功時success字段為”true”,data字段存儲opcodes;失敗時success字段為”false”,msg字段存放失敗原因。
由于跨越的關系,目前只能使用Curl而不能使用Ajax方式調用這個API,后續會為其增加JSONP接口。
“PHP擴展模塊opcode的安裝方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。