1. 程式人生 > >深入理解PHP之執行週期

深入理解PHP之執行週期

例項:
建立一個檔案,如:hello.php
<?php
    echo 'hello, world.';
?>

執行:
[[email protected] html]# /usr/local/php/bin/php -dvld.active=1 hello.php
Branch analysis from position: 0
Return found
filename:       /var/www/html/hello.php
function name:  (null)
number of ops:  3
compiled vars:  none
line     #  op                           fetch          ext  return  operands
-------------------------------------------------------------------------------
   2     0  ECHO                                                     'hello%2C+world.'
   4     1  RETURN                                                   1
         2* ZEND_HANDLE_EXCEPTION                                   

hello, world.

看另一個:
[
[email protected]
html]# vi vld.php
<?php

    $i = "This is a string";
   
    //I am comments

    echo $i. ' that has been echoed on screen';

?>

執行:
[[email protected] html]# /usr/local/php/bin/php -dvld.active=1 vld.php
Branch analysis from position: 0
Return found
filename:       /var/www/html/vld.php
function name:  (null)
number of ops:  5
compiled vars:  !0 = $i
line     #  op                           fetch          ext  return  operands
-------------------------------------------------------------------------------
   3     0  ASSIGN                                                   !0, 'This+is+a+string'
   7     1  CONCAT                                           ~1   !0, '+that+has+been+echoed+on+screen'
         2  ECHO                                                     ~1
  10    3  RETURN                                                   1
         4* ZEND_HANDLE_EXCEPTION                                   

This is a string that has been echoed on screen

注:ZEND_HANDLE_EXCEPTION 就是 Zend/zend_vm_opcodes.h 中第149條指令
compiled vars:  !0 = $i  此處是獲取變數名”i”的變數於!0(*zval)。
#0 將字串”this+is+a+string”賦值(ASSIGN)給!0
#1 字串連線
#2 顯示

這些中間程式碼會被Zend VM(Zend虛擬機器)直接執行。真正負責執行的函式是:zend_execute(zend_execute.h)。

相關推薦

深入理解PHP執行週期

例項: 建立一個檔案,如:hello.php <?php     echo 'hello, world.'; ?> 執行: [[email protected] html]# /usr/local/php/bin/php -dvld.active=1 hello.php Branch a

深入理解PHPstrpos

第一個 offset have nta break eol 布爾類型 ont master 概述 在php中經常用 strpos 判斷字符串是否在另一個字符串中存在, 本文介紹 strpos 函數及其實現。 strpos應用 &lt;?php /* strpos示例

深入理解php底層 php生命週期

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

併發程式設計美,帶你深入理解java多執行緒原理

1.什麼是多執行緒? 多執行緒是為了使得多個執行緒並行的工作以完成多項任務,以提高系統的效率。執行緒是在同一時間需要完成多項任務的時候被實現的。 2.瞭解多執行緒 瞭解多執行緒之前我們先搞清楚幾個重要的概念! 如上圖所示:對我們的專案有一個主記憶體,這個主記憶體裡面存放了我們的共享變數、方法區、堆中的物件等

深入理解PHP原理Opcodes

最近要給Yahoo的同事們做一個關於PHP和Apache處理請求的內部機制的講座,剛好寫了些關於Opcodes的文字,就發上來了,這個文章基於 Sara Golemon大師的《Understanding OPcode》 Opcode是一種PHP指令碼編譯後的中間語言,就像Java的Byt

深入理解PHP記憶體管理誰動了我的記憶體

首先讓我們看一個問題: 如下程式碼的輸出, var_dump(memory_get_usage()); $a = "laruence"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage()); 輸出

深入理解PHP原理函式(Introspecting PHP Function)

 宣告:此內容轉載鳥哥,只是留作個人學習、記錄用。為表尊重,特此說明。 在PHP中,函式分為倆種, •一種是zend_internal_function, 這種函式是由擴充套件或者Zend/PHP核心提供的,用’C/C++’編寫的,可以直接執行的函式。 •另外一種是ze

深入理解PHP原理變數 【轉自(風雪隅)】

PHP作為一個弱型別,動態的指令碼語言(不嚴格驗證變數型別)。宣告一個變數的時候,並不需要顯示指定它儲存的資料型別。<?php$var = 1; //int$var = "goith"; //st

深入理解PHP原理--echo的實現

PHP原始碼分析-echo實現詳解 原諒出處:http://jackywdx.cn/2009/01/implement_of_php_echo echo,這個是PHP運用得最多的標記之一,算不上是函式,PHP手冊裡這麼寫的,因為它沒有返回值。今天好奇就去看看PHP的原始碼

深入理解系列JAVA多執行緒(2)——synchronized同步原理

多執行緒中為了解決執行緒安全問題,一個重要的手段就是同步!所謂同步其實就是使得原本各個執行緒交叉執行(非同步),變成排隊執行(同步)。同步策略使得不同執行緒操作共享資料遵循“先來後到“,從而避免某個執行緒沒有處理完資料就被另一執行緒搶佔操作出現資料被覆蓋或

深入理解php底層:php生命週期

1、PHP的執行模式:     PHP兩種執行模式是WEB模式、CLI模式。無論哪種模式,PHP工作原理都是一樣的,作為一種SAPI執行。 1、當我們在終端敲入php這個命令的時候,它使用的是CLI。 它就像一個web伺服器一樣來支援php完成這個請求,請求完成後

深入理解javascript設計模式

rip 是我 解決問題 不想 接受 button move center 常識 設計模式 設計模式是命名、抽象和識別對可重用的面向對象設計實用的的通用設計結構。設計模式確定類和他們的實體、他們的角色和協作、還有他們的責任分配。 每個設計模式都聚焦於一個面向對象的設計難題

深入理解php內核 編寫擴展 I:介紹PHP和Zend

保持 理論 ifd gem counter 被調用 builds 讀取 添加 內容: 編寫擴展I - PHP和Zend起步 原文:http://devzone.zend.com/public/view/tag/Extension Part I: Introduction

深入理解javascript原型

undefine tor ace 對象實例 高級 code turn 三方 true 理解原型 原型是一個對象。其它對象能夠通過它實現屬性繼承。不論什麽一個對象都能夠成為繼承,全部對象在默認的情況下都有一個原型。由於原型本身也是對象,所以每一個原型自身又有一個原型

深入理解Java線程池

我們 先進先出 tor cor null 討論 等於 影響 log 重要連接:http://www.cnblogs.com/dolphin0520/p/3958019.html 出處:http://www.cnblogs.com/dolphin0520/     本文歸作者

深入理解JVMJVM內存區域與內存分配

錯誤 銷毀 構造方法 初學 不存在 data 空閑 table fin 深入理解JVM之JVM內存區域與內存分配   在學習jvm的內存分配的時候,看到的這篇博客,該博客對jvm的內存分配總結的很好,同時也利用jvm的內存模型解釋了java程序中有關參數傳遞的問題。  

深入理解PHP中賦值與引用

str ring int 之前 不同 重新 small nts 計數 【原文】 先看下面的問題: 1 2 3 4 5 6 7 8 <?php $a = 10;//將常量值賦給變量,會為a分配內存空間 $b = $a;//變量賦值給變量,是不是

深入理解SpringCloudEureka註冊過程分析

.net then media inject seq tar view inf cas   eureka是一種去中心化的服務治理應用,其顯著特點是既可以作為服務端又可以作為服務向自己配置的地址進行註冊。那麽這篇文章就來探討一下eureka的註冊流程。 一、Eureka的服

深入理解系列 float

子元素 out oat 理解 oom 20px 布局 空格 ble float的設計初衷: 僅僅是為了實現文字環繞效果 float的感性認知: 包裹性: 收縮:元素應用了float後,寬度收縮,緊緊地包裹住內容(即元素的寬度收縮到元素內的內容的寬度大小 堅挺:原來沒有高

深入理解python二——python列表和元組

n) 數據 兩種 性能 執行 效率 動態 單元 這一 從一開始學習python的時候,很多人就聽到的是元組和列表差不多,區別就是元組不可以改變,列表可以改變。 從數據結構來說,這兩者都應當屬於數組,元組屬於靜態的數組,而列表屬於動態數組。稍後再內存的分配上也會體現這一點。對