php內核分析之li_第1頁
php內核分析之li_第2頁
php內核分析之li_第3頁
php內核分析之li_第4頁
php內核分析之li_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、php內核分析之docli面是精心為大家的php內核分析之do_cli,不了解do_cli的同學不妨參考學習一下,更多內容請關注這里閱讀的php版本為PHP-7.1.0RC3,閱讀代碼的平臺為linux#main把剩下的代碼增加了下注釋全部貼出來了(這個是簡化后的main函數,去掉了一些無關緊要的代碼段):intmain(intargc,char*argv)sapi_module_struct*sapi_module=&cli_sapi_module;argv=save_ps_args(argc,argv);/程的參數,環境變量等。為的是對特定平臺,修正下argv變量以供 后續使用。c

2、li_sapi_module.additional_functions=additional_functions;/ /cli模式特有的函數#ifdefZTStsrm_startup(1,1,0,NULL);(void)ts_resource(0);ZEND_TSRMLS_CACHE_UPDATE();這里獲取一次當前執行進#endifzend_signal_startup();/設置信號,把一些需要反應的信號位設置為0/獲取參數, 做一些對應的初始化行為,或者一些簡單的操作,比如helpwhile(c=php_getopt(argc,argv,OPTIONS,&php_optarg,

3、&php_optind,0,2)!=-1)switch(c)/這里的c是代表返回的字符串的ascii碼值casec:casen:ini_ignore=1;/不使用ini文件, 通過代碼或者其他指定inibreak;cased:/配置ini的key,val值在命令行中,下面的行為都是修改ini_entries這個變量caseh:/*help&quit*/case?:php_cli_usage(argv0);gotoout;casei:casev:casem:sapi_module=&cli_sapi_module;gotoexit_loop;casee:/*enablee

4、xtendedinfooutput*/use_extended_info=1;break;exit_loop:sapi_module-ini_defaults=sapi_cli_ini_defaults;/設置初始化的ini值sapi_module-php_ini_path_override=ini_path_override;/設置重寫后的ini_path地址,如果是php-c的話,這個就為非nullsapi_module-phpinfo_as_text=1;/打開打印phpinfo的開關,需要的時候可以把phpinfo打印出來sapi_module-php_ini_ignore_cwd=1

5、;/不在當前路徑尋找php.inisapi_startup(sapi_module);/sapi初始化行為,比如初始化全局變量SG候需要調用shundown/開始調用sapi的startup方法,對cli模式, 實際上是調用php_cli_startup方法if(sapi_module-startup(sapi_module)=FAILURE)exit_status=1;gotoout;module_started=1;/標記位,標記已經調用了module的startup方法zend_first_tryexit_status=do_cli(argc,argv);/zend_end_try();

6、out:/這個代碼段已經是要退出了if(ini_path_override)free(ini_path_override);sapi_started=1;/標記,表示已經調用了startup,關閉的時這個是實際上調用的內容if(ini_entries)free(ini_entries);if(module_started)php_module_shutdown();if(sapi_started)sapi_shutdown();#ifdefZTStsrm_shutdown();#endifcleanup_ps_args(argv);exit(exit_status);其實看偽碼很簡單:tsrm_startup(1,1,0,NULL);/TSMsapi_startup(sapi_module);/SAPIsapi_module-startup(sapi_module);/php_module_shutdown();/當前模塊的zend_signal_startup();/信號設置啟動do_cli(argc,arg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論