導航:首頁 > 編程語言 > phpc源碼分析

phpc源碼分析

發布時間:2022-05-02 19:07:35

1. 拿到一個php源碼怎麼分析它用的是什麼框架

如果是單一入口模式的在index.php里的都會有簡介
/**
*
**/
如果是自己,或團隊開發的自己框架,有的會註明

2. 編譯php擴展一定要用vc6嗎 - PHP內核源碼分析

我個人理解是: 官方說 windows下的apache 要用VC6 我想應該使用了動態編譯(減少php.dll的大小)用VC寫的程序都應該知道,有個動態跟靜態連接那麼應該是apache2.dll這個文件 肯能需要VC6的一些lib庫支持??畢竟VC6是經典的C++編譯連接器當然,你如果編譯或者使用C++或者使用delphi等語言為PHP增加擴展功能肯定不限制你用什麼編譯器 因為如果你用VS2010這些編譯的話 只要設置成靜態的 還有取消微軟的託管完全可以兼容的? ?當然,如果用delphi編寫 肯能需要一些回調聲明??以為C++跟delphi不是同個聲明數據調用完後 進行內存數據銷毀的話肯能有區別以上完全個人理解 認為不當的 就當道聽途說 不用太當真

3. 請問一般怎麼分析一個PHP項目源代碼

拿到一個已經開發好的項目,該從哪裡開始分析?
首先分析項目有哪些模塊,然後分析每個模塊中有哪些功能,然後注意每個功能是如何實現的。
觸發某個事件,調用了什麼方法,跟著方法去看?(但這樣做往往會忽略方法中變數什麼時候在哪定義的,最好先整個頁面如何顯示研究一遍再從頁面的事件入手)。

4. 什麼是PHP源碼

你現在看的網路 就是由源碼(代碼)組成

而編寫網站代碼語言分很多種 就像都可以造汽車 只是廠家不同 製造工藝不同 有的先進 有的貴有的便宜

主流的網站代碼語言 asp, asp.net, php 我只知道這么多其實還有很多
都是由不同的公司開發的 雖然編寫語言不同 但是他們的目的都是一樣 製作網站 或程序
php源碼就是程序語言的一種

5. PHP是如何執行代碼解析過程的

就PHP語言來說,它也是一組符合一定規則的約定的指令。 在編程人員將自己的想法以php語言實現後,通過PHP的虛擬機(確切的來說應該是PHP的語言引擎Zend)將這些PHP指令轉變成C語言 (可以理解為更底層的一種指令集)指令,而c語言又會轉變成匯編語言, 最後匯編語言將根據處理器的規則轉變成機器碼執行。這是一個更高層次抽象的不斷具體化,不斷細化的過程。

6. php c語言的源代碼。入口函數為什麼找不到。不是main嗎。如果不是 那是 那個函數。 在那個文

我覺得是 main/main.c 這個文件

7. 開發php內核擴展如何使用GDB來調試 - PHP內核源碼分析

這個問題曾在我去某公司面試時被提起過,可惜考官問的是php的BUG調試方法,後來居然說的就是Core
mp,當時我就想這和PHP一點毛關系都沒有,開啟Core
mp幾乎是所有C/C++開發必備的,只是常態,可能是他們的PHP擴展用得太多了,也從側面說明了php的擴展比起其它語言來要麻煩許多。

8. PHP源碼到底是什麼

PHP,是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在伺服器
端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛的運用。PHP源碼指的使用PHP開發的實例,沒有經過二次封裝,能夠直接進行二
次開發的程序,PHP簡單易學,如果你想學網站開發,PHP是一個不錯的選擇,因會PHP跟其它語言相對有一定的優勢:
1、PHP是開放的源代碼:所有的PHP源代碼事實上都可以得到。
2、PHP是免費的。和其它技術相比,PHP本身免費。
3、php的快捷性,程序開發快,運行快,技術本身學習快。嵌入於HTML:因為PHP可以被嵌入於HTML語言,它相對於其他語言,編輯簡單,實用性強,更適合初學者。
4、跨平台性強:由於PHP是運行在伺服器端的腳本,可以運行在UNIX、LINUX、WINDOWS下。
5、效率高:PHP消耗相當少的系統資源。
6、圖像處理:用PHP動態創建圖像
7、面向對象:在php5 中,面向對象方面都有了很大的改進,現在php完全可以用來開發大型商業程序。
8、專業專註:

9. 如何用C語言編寫PHP擴展的詳解

1:預定義
在home目錄,也可以其他任意目錄,寫一個文件,例如caleng_mole.def
內容是你希望定義的函數名以及參數:
int a(int x,int y)
string b(string str,int n)

2:到php源碼目錄的ext目錄
#cd /usr/local/php-5.4.0/ext/

執行命令,生成對應擴展目錄
#./ext_skel --extname=caleng_mole --proto=/home/hm/caleng_mole.def

3:修改config.m4
去掉dnl的注釋

PHP_ARG_ENABLE(caleng_mole, whether to enable caleng_mole support,
Make sure that the comment is aligned:
[ --enable-caleng_mole Enable caleng_mole support])

4:修改caleng_mole.c

代碼如下:


/* {{{ proto int a(int x, int y)
*/
PHP_FUNCTION(a)
{
int argc = ZEND_NUM_ARGS();
int x;
int y;
int z;
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)

return;
z=x+y;
RETURN_LONG(z);
}
/* }}} */
/* {{{ proto string b(string str, int n)
*/
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '';
RETURN_STRINGL(result, result_length, 0);
}
/* }}} */


5:生成擴展庫
#cd ./caleng_mole
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install



6:到php的對應extensions目錄
如上圖所示
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
改目錄下有生成的caleng_mole.so文件

7:修改php.ini
php.ini如果找不到可以從phpinfo()打出的信息看到
#cd /usr/local/php/lib/
php.ini增加擴展信息
extension=caleng_mole.so

8:重啟Apache
# /usr/local/apache2/bin/apachectl restart

9:檢查載入
/usr/local/php/bin/php -m

10:PHP調用

代碼如下:


echo a(1,2);


輸出 3 就說明成功了!

下面是原文
Linux下用C開發PHP擴展
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
#> cd /software/php-5.2.13/ext
二、假設我們要開發一個名為caleng_mole的擴展,該擴展包含兩個函數:a--處理兩個整型相加和b-處理字元串重復輸出;
1、首先編寫一個函數定義文件,該文件編寫函數原型後綴為def,假設為:caleng_mole.def
int a(int x, int y)
string b(string str, int n)
2、通過擴展骨架生成器,將在ext目錄下自動建立擴展目錄caleng_mole
#> ./ext_skel --extname=caleng_mole --proto=caleng_mole.def
3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_mole/config.m4,將如下行的注釋標簽"dnl"去掉,修改後如下所示:
PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,
Make sure that the comment is aligned:
[ --enable-myfunctions Enable myfunctions support])
4、完善函數a和b的功能: #> vim /software/php-5.2.13/ext/caleng_mole/caleng_mole.c
PHP_FUNCTION(a)
{
int x, y, z;

int argc = ZEND_NUM_ARGS();

if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
return;
z = x + y;
RETURN_LONG(z);
}
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '';
RETURN_STRINGL(result, result_length, 0);
}
三、編譯安裝,假設php的安裝目錄為:/usr/localhost/webserver/php
#> cd /software/php-5.2.13/ext/caleng_mole
#> /usr/localhost/webserver/php/bin/phpize
#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config
#> make
#> make install
現在將在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目錄下生成caleng_mole.so文件
在php.ini配置文件中加入: extension=caleng_mole.so.

10. 怎樣去閱讀一份php源代碼

一句話就是「以學習和批評的辯證思想去看待」。 好吧!我們就開始吧! 那具體的我們怎樣去閱讀一份php的源代碼呢? 一。先把源代碼安裝起來,結合它的文檔和手冊,熟悉其功能和它的應用方式。 二。瀏覽源代碼的目錄結構,了解各個目錄的功能。 三。經過以上兩步後相信你對這個開源的產品有了一個初步的了解了,那現在就開始分析它的源碼吧。這一步我們開始分析源代碼框架。例如入口方式是單入口還是多入口,頁面之間的調用規則,能根據規則找出某個功能用到的頁面。 四。熟悉源代碼的代碼寫作風格,例如縮進方式,排版格式等。 五。熟悉一下源代碼用到的資料庫和表,可以參考它的技術支持文檔。 六。經過以上幾步相信大家已經對這份源代碼有了更深刻的了解,不過這種了解還只是表面的,下來我們從6個方面具體的去分析它吧: 1.入口構造以及頁面調用方式的具體實現,如果閱讀時看到工具類和工具函數,盡量去熟悉一下。這一步的分析可以學習到源代碼的系統架構方式。 2.分析源代碼用到的工具類和工具函數,這樣可以學到很多程序編寫技巧。可以提升自己編程功力。 3.結合一些安全規則,研究這個源代碼是怎樣實現安全方面的設計的。這樣可以提高自己在安全方面的意識和功力。 4.如果有模板引擎的話,研究一下源代碼的模板引擎。大致從實現方式,效率,易用性等幾個方面去考慮。 5.研究系統的各個功能模塊,這樣既能學習編程技巧還能打開自己的編程思路,下次遇到類似的東東就心裡有譜了。 6.研究系統所用到設計模式,一樣的功能實現,用到的設計模式可能相差很多,對比我們之前所作的東東分析設計模式,是提升我們駕馭代碼的不二法門。 7.研究源代碼對訪問壓力,執行效率,系統效率,資料庫查詢的優化。 方法只是途徑和工具,具體實踐還需要大家的努力。自己的感想是不要著急,認真分析,把分析心得用到自己的具體項目上,呵呵!

閱讀全文

與phpc源碼分析相關的資料

熱點內容
grub2命令行 瀏覽:618
無法獲取加密卡信息 瀏覽:774
雲伺服器網卡充值 瀏覽:509
編程就是軟體 瀏覽:49
伺服器如何添加許可權 瀏覽:437
引用指針編程 瀏覽:851
手機加密日記本蘋果版下載 瀏覽:63
命令行括弧 瀏覽:176
java程序升級 瀏覽:490
排序演算法之插入類 瀏覽:227
gcccreate命令 瀏覽:73
海爾監控用什麼app 瀏覽:64
系統盤被壓縮開不了機 瀏覽:984
linuxredis30 瀏覽:541
狸窩pdf轉換器 瀏覽:696
ajax調用java後台 瀏覽:904
活塞式壓縮機常見故障 瀏覽:614
break演算法 瀏覽:731
換電池的app是什麼 瀏覽:771
單片機ad采樣快速發送電腦 瀏覽:22