程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 一個簡單php擴展介紹與開發教程

一個簡單php擴展介紹與開發教程

編輯:PHP綜合
我們使用php擴展,主要目的是提高程序的執行效率,對於訪問量很大的代碼或者邏輯將其寫成擴展。在做項目的過程中,需要對數據進行排序,數據運算比較復雜;我們准備對一百萬個數據進行排序, 下面是我在程序之前做的一個測試:首先使用php程序生成一百萬的隨機數,並將其保存在文件中。
生成隨即數的代碼如下面所示:
復制代碼 代碼如下:
set_time_limit(0);
ini_set("memory_limit", -1);
$data = array();
for($i = 1; $i < 1000000; $i++)
  $data[] = rand();
file_put_contents('data.php', '<?php $data = ' . var_export($data, true) . "; ?>");

代碼很簡單,一看就明白,這裡不作說明。
下面是使用php寫的快速排序,php自身帶的排序函數,以及自己擴展的排序函數,它們所需時間如下所示:

下面將php代碼展示一下,需要說明的是:hello函數時自己寫的擴展
復制代碼 代碼如下:
<?php
ini_set("memory_limit", -1);
set_time_limit(0);
include_once('data.php'); //剛才產生的隨機數保存在這個文件
$len = count($data);
$data_s = $data_q = $data;
$s_s = $s_t = array_sum(explode(" ", microtime()));
qsort($data, 0, $len-1);
$s_t = array_sum(explode(" ", microtime()));
sort($data_s);
$q_t = array_sum(explode(" ", microtime()));
$data_q = hello($data_q);
$r_t = array_sum(explode(" ", microtime()));
echo "php寫的快速排序
很簡單吧, 多的不說啦,下面說說這個擴展的開發
生成 擴展有一定的步驟,網上都有很講解,我這裡也不再羅嗦,
首先使用php的庫文件生成一個基本的擴展項目

生成的項目,

修改sort.c,將自己的快排寫進去, 我這邊的代碼是將php程序的快速排序改成c語言。生成dll後,將其放在php擴展中,首先檢查一下是否已將啟用擴展。

然後 在代碼中直接使用hello函數(我這裡沒有改函數名)

注意:擴展一定要考慮全面,不能在使用中出錯,特別是C寫的代碼,否則會出現php系統崩潰
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved