日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php dvld.active 1,PHP的字符串

發布時間:2023/12/19 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php dvld.active 1,PHP的字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與C語言不同, php中有二種字符串,單引號的與雙引號的。。。

在php內部,使用單引號和使用雙引號,有什么區別呢?

把變量放到雙引號字符串中,與使用.進行字符串連接,哪種方式更省內存呢?

Vulcan Logic Disassembler介紹與安裝

Vulcan Logic Disassembler ,簡稱VLD。D也是Dumper的意思。

它是一個php的擴展(extension), 通過它可以看到PHP編譯之后的Opcode。

下載地址:

http://pecl.php.net/package/vld

作者的主頁: http://derickrethans.nl/projects.html#vld

xdebug也是此人所寫。

環境說明

php5.2.13安裝在了/home/modify/test/ 目錄中。

/home/modify/test/php-5.2.13/ 是PHP的源碼目錄。

php位于 /home/modify/test/bin/php

phpize位于 /home/modify/test/bin/phpize

php-config位于 /home/modify/test/bin/php-config

php.ini位于 /home/modify/test/lib/php.ini

php.ini中設置的extension_dir: extension_dir = “/home/modify/test/ext/”

下載vld

[

root@

masalife.com]

# cd /home/modify/test/php-5.2.13/ext

[

root@

masalife.com]

# svn co svn://svn.xdebug.org/svn/php/vld/trunk vld

編譯與安裝

[

root@

masalife.com]

# cd /home/modify/test/php-5.2.13/ext/vld

[

root@

masalife.com]

# /home/modify/test/bin/phpize

[

root@

masalife.com]

# ./configure --enable-vld --with-php-config=/home/modify/test/bin/php-config

[

root@

masalife.com]

# make

[

root@

masalife.com]

# cp modules/vld.so /home/modify/test/ext/

[

root@

masalife.com]

# vi /home/modify/test/lib/php.ini

在最后面加上 extension

=vld.so

這樣就安裝完畢了。可以看一下phpinfo,有沒有加載到 vld.so。

這個extension有二個參數:

vld.active 1表示啟用 0禁用

vld.execute 1運行代碼 0只顯示Opcode,不運行代碼

沒有必要把它們寫到php.ini中。恩,沒有必要。直接在命令行中指定就可以了。

使用vld

來看看下面的PHP代碼編譯成Opcode之后是什么樣子的:

雙引號的echo

echo

"huarong@masalife.com"

;

[

root@

masalife.com]

# /home/modify/test/bin/php -dvld.active=1 -dvld.execute=0 /tmp/aabi432o32.php

number of ops: 3

compiled vars: none

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ECHO OP1[

IS_CONST (

5959335

)

'huarong%40masalife.com'

]

4

1

>

RETURN OP1[

IS_CONST (

0

)

1

]

2

*

>

ZEND_HANDLE_EXCEPTION

op總數量3。

@被轉義成為 %40 。 和urlencode一樣的哈。

雙引號被轉化成為單引號了!!

單引號的echo

echo

'huarong@masalife.com'

;

[

root@

masalife.com]

# /home/modify/test/bin/php -dvld.active=1 -dvld.execute=0 /tmp/aabi432o32.php

number of ops: 3

compiled vars: none

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ECHO OP1[

IS_CONST (

11450330

)

'huarong%40masalife.com'

]

4

1

>

RETURN OP1[

IS_CONST (

0

)

1

]

2

*

>

ZEND_HANDLE_EXCEPTION

仍然是單引號。

雙引號字符串中的變量

$a

=

"modify"

;

echo

"huarong@masalife.com $a

"

;

[

root@

masalife.com]

# /home/modify/test/bin/php -dvld.active=1 -dvld.execute=0 /tmp/aabi432o32.php

number of ops: 7

compiled vars: !

0

= $a

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ASSIGN OP1[

IS_CV !

0

]

OP2[

, IS_CONST (

628503

)

'modify'

]

3

1

INIT_STRING RES[

IS_TMP_VAR ~1

]

2

ADD_STRING RES[

IS_TMP_VAR ~1

]

OP1[

IS_TMP_VAR ~1

]

OP2[

, IS_CONST (

628186

)

'huarong%40masalife.com+'

]

3

ADD_VAR RES[

IS_TMP_VAR ~1

]

OP1[

IS_TMP_VAR ~1

]

OP2[

, IS_CV !

0

]

4

ECHO OP1[

IS_TMP_VAR ~1

]

5

5

>

RETURN OP1[

IS_CONST (

0

)

1

]

6

*

>

ZEND_HANDLE_EXCEPTION

0 ASSIGN 是為$a賦值

之后的echo語句竟然變成了4行opcode:

INIT_STRING, ADD_STRING, ADD_VAR, ECHO。

INIT_STRING是初始化整個string

ADD_STRING是添加 “huarong@masalife.com ”

ADD_VAR是添加$a

ECHO就輸出了。

如果是 echo “huarong@masalife.com $a abc”

在ADD_VAR之后,還要再ADD_STRING “abc”。

number of ops: 8

compiled vars: !

0

= $a

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ASSIGN OP1[

IS_CV !

0

]

OP2[

, IS_CONST (

3396580

)

'modify'

]

3

1

INIT_STRING RES[

IS_TMP_VAR ~1

]

2

ADD_STRING RES[

IS_TMP_VAR ~1

]

OP1[

IS_TMP_VAR ~1

]

OP2[

, IS_CONST (

3396263

)

'huarong%40masalife.com+'

]

3

ADD_VAR RES[

IS_TMP_VAR ~1

]

OP1[

IS_TMP_VAR ~1

]

OP2[

, IS_CV !

0

]

4

ADD_STRING RES[

IS_TMP_VAR ~1

]

OP1[

IS_TMP_VAR ~1

]

OP2[

, IS_CONST (

3396585

)

'+abc'

]

5

ECHO OP1[

IS_TMP_VAR ~1

]

5

6

>

RETURN OP1[

IS_CONST (

0

)

1

]

7

*

>

ZEND_HANDLE_EXCEPTION

如果字符串中有很多變量。。。想想就覺得郁悶。

字符串連接

$a

=

"modify"

;

echo

"huarong@masalife.com"

.

$a

;

[

root@

masalife.com]

# /home/modify/test/bin/php -dvld.active=1 -dvld.execute=0 /tmp/aabi432o32.php

number of ops: 5

compiled vars: !

0

= $a

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ASSIGN OP1[

IS_CV !

0

]

OP2[

, IS_CONST (

7277335

)

'modify'

]

3

1

CONCAT RES[

IS_TMP_VAR ~1

]

OP1[

IS_CONST (

7277018

)

'huarong%40masalife.com'

]

OP2[

, IS_CV !

0

]

2

ECHO OP1[

IS_TMP_VAR ~1

]

5

3

>

RETURN OP1[

IS_CONST (

0

)

1

]

4

*

>

ZEND_HANDLE_EXCEPTION

簡單了很多,字符串連接就是一個CONCAT,然后就ECHO了。

比起把變量放到字符串里面,字符串連接的速度更快啦。

關于這一點,在PHP文檔中也有提及:

Parsing variables within strings uses more memory than string concatenation.

When writing a PHP script in which memory usage is a concern,

consider using the concatenation operator (.) rather than variable parsing.

如果是多個字符串進行連接,如 echo “huarong@masalife.com “.$a.” abc”;

就會CONCAT多次:

number of ops: 6

compiled vars: !

= $a

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ASSIGN OP1[

IS_CV !

0

]

OP2[

, IS_CONST (

6217291

)

'modify'

]

3

1

CONCAT RES[

IS_TMP_VAR ~1

]

OP1[

IS_CONST (

6216973

)

'huarong%40masalife.com+'

]

OP2[

, IS_CV !

0

]

2

CONCAT RES[

IS_TMP_VAR ~2

]

OP1[

IS_TMP_VAR ~1

]

OP2[

, IS_CONST (

6217296

)

'+abc'

]

3

ECHO OP1[

IS_TMP_VAR ~2

]

5

4

>

RETURN OP1[

IS_CONST (

0

)

1

]

5

*

>

ZEND_HANDLE_EXCEPTION

另外一種連接字符串的方式

使用逗號也可以的!

$a

=

"modify"

;

echo

"huarong@masalife.com"

,

$a

;

[

root@

masalife.com]

# /home/modify/test/bin/php -dvld.active=1 -dvld.execute=0 /tmp/aabi432o32.php

number of ops: 5

compiled vars: !

0

= $a

line # * op fetch ext return operands

---------------------------------------------------------------------------------

2

0

>

ASSIGN OP1[

IS_CV !

0

]

OP2[

, IS_CONST (

3686782

)

'modify'

]

3

1

ECHO OP1[

IS_CONST (

3686464

)

'huarong%40masalife.com'

]

2

ECHO OP1[

IS_CV !

0

]

5

3

>

RETURN OP1[

IS_CONST (

0

)

1

]

4

*

>

ZEND_HANDLE_EXCEPTION

可以看到,使用逗號連接字符串就相當于echo了多次。。。

不過逗號只有在echo的時候可以用,print就不支持它了。

由于它沒有用到CONCAT字符串操作,應該會更加節省內存。

總結

以上是生活随笔為你收集整理的php dvld.active 1,PHP的字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日夜夜爱爱 | 中文有码一区 | 欧美丰满熟妇xxxx | 亚洲美女性视频 | 亚洲一区二区三区高清视频 | 天天综合天天做 | 少妇又紧又色又爽又刺激 | a视频在线免费观看 | 日韩欧美自拍偷拍 | 亚洲女同一区二区 | 亚洲一区二区网站 | 婷婷狠狠操 | www色综合 | 67194少妇在线观看 | 一区二区三区精品免费视频 | 亚洲永久免费网站 | 免费日韩欧美 | www国产精品内射熟女 | 中文字幕第7页 | www.亚洲在线| 天堂中文在线资 | 国产网友自拍视频 | 波多野结衣视频在线看 | 成人免费网视频 | 中文字幕91视频 | 国产精品自拍av | 色综合综合网 | 丰满人妻一区二区三区性色 | 女人天堂av | 96国产精品 | 你懂的在线网站 | 国产手机在线视频 | 四虎影视永久免费 | 五月天色综合 | 欧美日韩看片 | 性欧美巨大 | 成人国产精品免费 | 国产精品传媒一区二区 | 欧美a级网站 | 人妖和人妖互交性xxxx视频 | 可以在线观看的av | 精品无人国产偷自产在线 | 国产调教 | 国产伦精品一区二区三区免费视频 | 中文字幕国产精品 | 四虎网站| 亚洲综合情| 国产日韩一区二区在线 | 伊人网在线播放 | 久久精品网 | 日本55丰满熟妇厨房伦 | 久久精精品久久久久噜噜 | 天天干天天摸 | 国产精品社区 | 精品视频免费在线观看 | 中国少妇乱子伦视频播放 | 综合激情五月婷婷 | 少妇视频在线播放 | www视频免费在线观看 | 全黄一级裸体片 | 精品无码三级在线观看视频 | 三级国产三级在线 | 久久久久久久蜜桃 | 男女视频一区 | 伊人网综合 | www.av天天 | 欧美做爰xxxⅹ性欧美大片 | 日韩性生交大片免费看 | 9999免费视频 | 色偷偷888欧美精品久久久 | 老司机激情视频 | 尤物视频在线看 | 美女张开腿让男人操 | 女同一区| 国产精品va | 欧美性猛交xxxx乱大交 | 国内精品一区二区三区 | 高清av不卡| 99re在线精品视频 | 中文av一区 | 秘密爱大尺度做爰呻吟 | 一本大道久久a久久精二百 琪琪色在线视频 | 波多野结衣久久久久 | 欧美激情天堂 | 粉嫩av一区二区夜夜嗨 | 精品人妻一区二区三区四区久久 | 欧美mv日韩mv国产网站app | 亚洲色图偷拍视频 | 婷婷777 | 人与拘一级a毛片 | 亚洲欧美国产一区二区三区 | 精品一区二区三区免费毛片爱 | 韩国精品久久久 | 有声小说 成人专区 | 日韩成人精品在线观看 | 国产精品1000部啪视频 | 国产精品v亚洲精品v日韩精品 | 欧美xxxxhd| 无码人妻丰满熟妇区96 |