溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP擴展模塊opcode的安裝方法

發(fā)布時間:2021-09-04 12:37:13 來源:億速云 閱讀:145 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“PHP擴展模塊opcode的安裝方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

Opdumper

安裝

Opdumper的源碼已經(jīng)托管在github上,其地址為:https://github.com/ericzhang-cn/opdumper??梢酝ㄟ^以下命令克隆源代碼:

git clone https://github.com/ericzhang-cn/opdumper.git

Opdumper是一個標準的PHP Extension,安裝方法如下:

首先將Opdumper源碼放到PHP源碼包的ext/opdumper目錄下,進入此目錄執(zhí)行如下命令:

phpize   ./configure  make  make install

然后在php.ini中添加一行配置:

extension=opdumper.so

目前opdumper支持PHP>=5.3,在Linux和MacOS下測試通過,Windows下未做測試。

CLI API

Opdumper支持類似vld的命令行方式輸出opcode,只需在執(zhí)行php命令時通過-d參數(shù)將opdumper.active=1傳入。例如我們有一個foo.php:

<?php   $a = 'hello';   echo $a;   ?>

執(zhí)行如下命令:

php -d opdumper.active=1 foo.php

結(jié)果如下:


PHP擴展模塊opcode的安裝方法

PHP_FUNCTION API

Opdumper還支持vld不支持的PHP_FUNCTION API,Opdumper提供了兩個PHP函數(shù):od_dump_opcodes_string和od_dump_opcodes_file。前者接受一個字符串作為產(chǎn)生,字符串是一段PHP代碼;后者接受一個PHP文件作為參數(shù),返回值均是一個存有opcode結(jié)果的PHP數(shù)組。以od_dump_opcodes_file為例,我們在foo.php同一目錄下再寫一個bar.php:

<?php  $opcodes = od_dump_opcodes_file('./foo.php');   var_dump($opcodes);   ?>

執(zhí)行結(jié)果如下:

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服務(wù):Opcode Dumper

坦白說,安裝PHP模塊還是挺麻煩的。所以為了方便朋友們查看opcode,我為Opdumper搭建了一個在線Web服務(wù):http://supercompiler.com/app/opcode_dumper。

Web頁面訪問

只要訪問這個頁面,在編輯框中輸入或粘貼進PHP代碼,就可以快速看到相應的opcode:

PHP擴展模塊opcode的安裝方法

同時,也可以將結(jié)果下載到本地(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字段存放失敗原因。

由于跨越的關(guān)系,目前只能使用Curl而不能使用Ajax方式調(diào)用這個API,后續(xù)會為其增加JSONP接口。

“PHP擴展模塊opcode的安裝方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI