婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何理解PHP程序執行的過程原理

如何理解PHP程序執行的過程原理

熱門標簽:天津電銷外呼系統違法嗎 合肥ai電銷機器人費用 滄州電銷外呼系統價格 上海400客服電話怎么申請 銀行信貸電話機器人 凱立德地鐵站地圖標注 400電話個人能不能辦理 手機外呼系統什么原理 溫州外呼系統招商

概述

Web環境我們假設為Apache。在編譯PHP的時候,為了能夠讓Apache支持PHP,我們會生成一個mod_php5.so的模塊。Apache加載這個模塊,在url訪問.php文件的時候,就會轉給mod_php5.so模塊來處理。

這個就是我們常說的SAPI。英文名字是:Server Application Programming Interface。SAPI其實是一個統稱,其下有 ISAPI,CLI SAPI,CGI等。有了它,就可以很容易的跟其他東西交互,比如APACHE,IIS,CGI等。

Apache啟動后會將mod_pho5.so模塊的hook handler注冊進來,當Apache檢測到訪問的url是一個php文件時,這時候就會把控制權交給SAPI。進入到SAPI后,首先會執行sapi/apache/mod_php5.c 文件的php_init_handler函數,

這里摘錄一段代碼:

static void php_init_handler(server_rec *s, pool *p)
{
    register_cleanup(p, NULL, (void (*)(void *))apache_php_module_shutdown_wrapper, (void (*)(void *))php_module_shutdown_for_exec);
    if (!apache_php_initialized) {
        apache_php_initialized = 1;
        #ifdef ZTS
        tsrm_startup(1, 1, 0, NULL);
        #endif
        sapi_startup(apache_sapi_module);
        php_apache_startup(apache_sapi_module);
    }
    #if MODULE_MAGIC_NUMBER >= 19980527
    {
        TSRMLS_FETCH();
        if (PG(expose_php)) {
            ap_add_version_component("PHP/" PHP_VERSION);
        }
    }
    #endif
}

該函數主要調用兩個函數:sapi_startup(apache_sapi_module); php_apache_startup(apache_sapi_module);

static int php_apache_startup(sapi_module_struct *sapi_module)
{
    if (php_module_startup(sapi_module, apache_module_entry, 1) == FAILURE) {
        return FAILURE;
    } else {
        return SUCCESS;
    }
}

sapi_startup創建一個 sapi_globals_struct結構體。sapi_globals_struct保存了Apache請求的基本信息,如服務器信息,Header,編碼等。sapi_startup執行完畢后再執行php_apache_startup。

static int php_apache_startup(sapi_module_struct *sapi_module)
{
    if (php_module_startup(sapi_module, apache_module_entry, 1) == FAILURE) {
        return FAILURE;
    } else {
        return SUCCESS;
    }
}

php_module_startup 內容太多,這里介紹一下大致的作用:

1. 初始化zend_utility_functions 結構.這個結構是設置zend的函數指針,比如錯誤處理函數,輸出函數,流操作函數等.

2. 設置環境變量.

3. 加載php.ini配置.

4. 加載php內置擴展.

5. 寫日志.

6. 注冊php內部函數集.

7. 調用 php_ini_register_extensions,加載所有外部擴展

8. 開啟所有擴展

9. 一些清理操作.

重點說一下 3,4,7,8

加載php.ini配置

if (php_init_config(TSRMLS_C) == FAILURE) {
    return FAILURE;
}

php_init_config函數會在這里檢查所有php.ini配置,并且找到所有加載的模塊,添加到php_extension_lists結構中。

加載php內置擴展

調用 zend_register_standard_ini_entries加載所有php的內置擴展,如array,mysql等。

調用 php_ini_register_extensions,加載所有外部擴展

main/php_ini.c

void php_ini_register_extensions(TSRMLS_D)
{
    zend_llist_apply(extension_lists.engine, php_load_zend_extension_cb TSRMLS_CC);
    zend_llist_apply(extension_lists.functions, php_load_php_extension_cb TSRMLS_CC);

    zend_llist_destroy(extension_lists.engine);
    zend_llist_destroy(extension_lists.functions);
}

zend_llist_apply函數遍歷extension_lists 執行回調函數php_load_php_extension_cb

static void php_load_zend_extension_cb(void *arg TSRMLS_DC)
{
    zend_load_extension(*((char **) arg));
}

該函數最后調用

if ((module_entry = zend_register_module_ex(module_entry TSRMLS_CC)) == NULL) {
    DL_UNLOAD(handle);
    return FAILURE;
}

將擴展信息放到 Hash表module_registry中,Zend/zend_API.c

if (zend_hash_add(module_registry, lcname, name_len+1, (void *)module, sizeof(zend_module_entry), (void**)module_ptr)==FAILURE) {
    zend_error(E_CORE_WARNING, "Module \'%s' already loaded", module->name);
    efree(lcname);
    return NULL;
}

最后,zend_startup_modules(TSRMLS_C); 對模塊進行排序,并檢測是否注冊到module_registry HASH表里。zend_startup_extensions(); 執行extension->startup(extension);啟動擴展。

以上就是如何理解PHP程序執行的過程原理的詳細內容,更多關于PHP程序執行的過程原理的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 如何使用PHP依賴管理工具Composer
  • 如何使用Casbin作為ThinkPHP的權限控制中間件
  • 詳解php內存管理機制與垃圾回收機制
  • 淺談PHP性能優化之php.ini配置
  • 詳解PHP的7個預定義接口
  • 如何使用Zephir輕松構建PHP擴展
  • 如何讓PHP的代碼更安全
  • 詳解thinkphp的Auth類認證
  • 如何使用PHP7的Yaconf

標簽:怒江 七臺河 赤峰 酒泉 白城 洛陽 金華 溫州

巨人網絡通訊聲明:本文標題《如何理解PHP程序執行的過程原理》,本文關鍵詞  如何,理解,PHP,程序,執,行的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何理解PHP程序執行的過程原理》相關的同類信息!
  • 本頁收集關于如何理解PHP程序執行的過程原理的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产精品久久久久婷婷884 | 国产欧美一区二区精品性色 | 久久麻豆一区二区| 国产婷婷一区二区| 久久国产生活片100| 欧美日韩国产系列| 亚洲成人动漫在线观看| 精品视频在线免费观看| 日本系列欧美系列| 日韩一区二区影院| 奇米影视一区二区三区| 日韩精品一区在线观看| 免费精品视频在线| 国产亚洲制服色| 97久久超碰国产精品| 国产精品久久99| 91视频在线观看免费| 国产精品不卡在线| aaa亚洲精品| 亚洲va欧美va天堂v国产综合| 亚洲人成在线观看一区二区| 国产一区在线精品| 欧美国产精品劲爆| 欧美体内she精高潮| 日韩中文字幕麻豆| 欧美一区二区在线免费播放| 久久精品国内一区二区三区| 国产欧美一区二区三区鸳鸯浴| 欧美一级在线免费| 国产资源在线一区| 中文字幕一区二区三区色视频 | 免费观看在线综合色| 日韩欧美亚洲一区二区| 国精产品一区一区三区mba桃花 | www激情久久| 久久国产精品99精品国产| 日韩亚洲欧美在线| 经典三级在线一区| 日韩一区欧美一区| 91精品国产综合久久婷婷香蕉| 精品福利av导航| 93久久精品日日躁夜夜躁欧美| 国产电影一区在线| 亚洲欧美日韩国产成人精品影院| 视频一区二区不卡| 91久久精品国产91性色tv| 91精品国产入口在线| 成人激情黄色小说| 蜜桃传媒麻豆第一区在线观看| 99免费精品在线| 经典三级在线一区| 日韩国产在线一| 国产精品美女久久久久av爽李琼 | 国产欧美1区2区3区| 99精品久久只有精品| 国产麻豆精品95视频| 日韩成人伦理电影在线观看| 一区在线观看免费| 国产精品免费丝袜| 国产亚洲成年网址在线观看| 欧美一级日韩一级| 欧美日韩在线免费视频| 色综合久久久久综合| 成人蜜臀av电影| 国产成人精品免费在线| 蜜桃视频第一区免费观看| 亚洲成av人片观看| 亚洲香蕉伊在人在线观| 亚洲精品高清在线观看| 中文字幕在线一区| 国产精品美女www爽爽爽| 久久人人爽人人爽| 欧美va亚洲va国产综合| 久久久国产午夜精品| 国产免费久久精品| 中文字幕国产一区二区| 国产精品久久久久精k8| 亚洲综合偷拍欧美一区色| 亚洲一区在线观看网站| 国产精品久久久久久久久动漫 | 懂色av一区二区夜夜嗨| 精品乱人伦小说| 成人三级伦理片| 日韩中文字幕av电影| 亚洲日本护士毛茸茸| 欧美综合亚洲图片综合区| 秋霞影院一区二区| 亚洲三级在线看| 精品国产污网站| 欧美日韩不卡在线| 在线观看av不卡| 另类中文字幕网| 亚洲成人一区在线| 亚洲男女一区二区三区| 久久久影视传媒| 8x福利精品第一导航| 一本一道久久a久久精品| 国产999精品久久久久久| 一区二区三区在线观看网站| 国产精品国产三级国产专播品爱网| 国产片一区二区| 欧美成人a∨高清免费观看| 91精品一区二区三区久久久久久| 亚洲国产精品久久人人爱 | 国产一区二区电影| 亚洲欧美日韩人成在线播放| 亚洲欧美区自拍先锋| 久久综合五月天婷婷伊人| 亚洲欧美乱综合| 欧美日韩在线观看一区二区| 亚洲精品你懂的| 在线这里只有精品| 婷婷一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 欧美性猛交一区二区三区精品| 午夜国产精品影院在线观看| 久久99国产精品免费| 一本一道久久a久久精品综合蜜臀| 国产老妇另类xxxxx| 色哟哟在线观看一区二区三区| 精品在线播放免费| 成人性生交大片免费看视频在线| 天天影视色香欲综合网老头| 另类小说色综合网站| 欧美日韩日本视频| 亚洲女性喷水在线观看一区| 精品亚洲aⅴ乱码一区二区三区| 天堂精品中文字幕在线| 成人sese在线| 精品电影一区二区| 丝瓜av网站精品一区二区| 成人中文字幕电影| 久久综合成人精品亚洲另类欧美 | 99久久久久免费精品国产| 在线播放日韩导航| 亚洲美女区一区| 99久久99久久久精品齐齐| 国产日韩欧美一区二区三区乱码| 欧美经典一区二区| 裸体一区二区三区| 欧美成人精品3d动漫h| 免费欧美在线视频| 日韩欧美一级精品久久| 亚洲成av人片观看| 91精品福利在线一区二区三区 | 狠狠色丁香久久婷婷综| 色综合一区二区| 91高清在线观看| 国产精品久久久久久久久快鸭 | 国产精品99久久久久久宅男| av成人老司机| 亚洲激情图片小说视频| 色婷婷亚洲婷婷| 亚洲成人一区在线| 日韩亚洲欧美综合| 国产成人午夜电影网| 亚洲欧洲精品一区二区三区不卡| 亚洲一区二区三区视频在线播放| 午夜久久久影院| 91老师国产黑色丝袜在线| 亚洲人123区| 在线观看日韩电影| 日本一道高清亚洲日美韩| 欧美精品一区二区三区蜜臀| 国产iv一区二区三区| 亚洲美女少妇撒尿| 欧美成人r级一区二区三区| 粉嫩av一区二区三区在线播放| 欧美调教femdomvk| 天天综合网天天综合色| 精品少妇一区二区| 成人动漫精品一区二区| 天堂成人国产精品一区| 久久久综合激的五月天| 在线一区二区三区| 久久国产精品色| 亚洲免费资源在线播放| 精品久久国产字幕高潮| 色婷婷激情久久| 美女尤物国产一区| 亚洲品质自拍视频网站| 久久嫩草精品久久久精品一| 欧美图区在线视频| 成人免费的视频| 美女脱光内衣内裤视频久久网站| 91麻豆精品秘密| 青青草97国产精品免费观看| 中文字幕日韩av资源站| 6080yy午夜一二三区久久| 国产成人在线视频网址| 亚洲国产精品尤物yw在线观看| 高清不卡一二三区| 亚洲高清一区二区三区| 国产欧美久久久精品影院| 欧美日韩精品一区二区天天拍小说 | 欧美性色黄大片| 亚洲成国产人片在线观看| 国产精品色哟哟| 欧美mv日韩mv| 欧美精品色一区二区三区|