緣起
創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、荊州網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為荊州等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
關(guān)于PHP 很多人的直觀感覺(jué)是PHP是一種靈活的腳本語(yǔ)言 庫(kù)類豐富 使用簡(jiǎn)單 安全 非常適合WEB開(kāi)發(fā) 但性能低下 PHP的性能是否真 的就如同大家的感覺(jué)一樣的差呢?本文就是圍繞這么一個(gè)話題來(lái)進(jìn)行探討的 從源碼 應(yīng)用場(chǎng)景 基準(zhǔn)性能 對(duì)比分析等幾個(gè)方面深入分析PHP之性能問(wèn)題 并通 過(guò)真實(shí)的數(shù)據(jù)來(lái)說(shuō)話
從原理分析PHP性能
從原理分析PHP的性能 主要從以下幾個(gè)方面 內(nèi)存管理 變量 函數(shù) 運(yùn)行機(jī)制來(lái)進(jìn)行分析
內(nèi)存管理
類似Nginx的內(nèi)存管理方式 PHP在內(nèi)部也是基于內(nèi)存池 并且引入內(nèi)存池的生命周期概念 在內(nèi)存池方面 PHP對(duì)PHP腳本和擴(kuò)展的所有內(nèi) 存相關(guān)操作都進(jìn)行了托管 對(duì)大內(nèi)存和小內(nèi)存的管理采用了不同的實(shí)現(xiàn)方式和優(yōu)化 具體可以參考以下文檔 在內(nèi)存分配和回收的生命周期內(nèi) PHP采用一次初始化申請(qǐng)+動(dòng)態(tài)擴(kuò)容+內(nèi)存標(biāo)識(shí)回收機(jī)制 并且在每次請(qǐng)求結(jié)束后直 接對(duì)內(nèi)存池進(jìn)行重新mask
變量
總所周知 PHP是一種弱變量類型的語(yǔ)言 所以在PHP內(nèi)部 所有的PHP變量都對(duì)應(yīng)成一種類型Zval 其中具體定義如下
圖一PHP變量
在變量方面 PHP做了大量的優(yōu)化工作 比如說(shuō)Reference counting和copy on writer機(jī)制 這樣能夠保證內(nèi)存使用上的優(yōu)化 并且減少內(nèi)存拷貝次數(shù)(請(qǐng)參考) 在數(shù)組方面 PHP內(nèi)部采用高效的hashtable來(lái)實(shí)現(xiàn)
函數(shù)
在PHP內(nèi)部 所有的PHP函數(shù)都回轉(zhuǎn)化成內(nèi)部的一個(gè)函數(shù)指針 比如說(shuō)擴(kuò)展中函數(shù)
ZEND_FUNCTION?(?my_function?);//類似function?my_function(){}
在內(nèi)部展開(kāi)后就會(huì)是一個(gè)函數(shù)
void?zif_my_function?(?INTERNAL_FUNCTION_PARAMETERS?);
void?zif_my_function(
int?ht
zval?*?return_value
zval?*?this_ptr
int?return_value_used
zend_executor_globals?*?executor_globals
);
從這個(gè)角度來(lái)看 PHP函數(shù)在內(nèi)部也是對(duì)應(yīng)一個(gè)函數(shù)指針
運(yùn)行機(jī)制
在話說(shuō)PHP性能的時(shí)候 很多人都會(huì)說(shuō)“C/C++是編譯型 JAVA是半編譯型 PHP是解釋型” 也就是說(shuō)PHP是先動(dòng)態(tài)解析再代碼運(yùn)行的 所以從這個(gè)角度來(lái)看 PHP性能必然很差
的確 從PHP腳本運(yùn)行來(lái)輸出 的確是一個(gè)動(dòng)態(tài)解析再代碼運(yùn)行的過(guò)程 具體來(lái)說(shuō) PHP腳本的運(yùn)行機(jī)制如下圖所示
圖二 PHP運(yùn)行機(jī)制
PHP的運(yùn)行階段也分成三個(gè)階段
Parse 語(yǔ)法分析階段
Compile 編譯產(chǎn)出opcode中間碼
Execute 運(yùn)行 動(dòng)態(tài)運(yùn)行進(jìn)行輸出
所以說(shuō) 在PHP內(nèi)部 本身也是存在編譯的過(guò)程 并且據(jù)此產(chǎn)生了大量的opcode cache工具 比如說(shuō)apc eacc xcache等等 這些opcode cache在生產(chǎn)環(huán)境基本上在標(biāo)配 基于opcode cache 能到做到“PHP腳本編譯一次 多次運(yùn)行”的效果 從這點(diǎn)上 PHP就和JAVA的半編譯機(jī)制非常類似
所以 從運(yùn)行機(jī)制上來(lái)看 PHP的運(yùn)行模式和JAVA是非常類似的 都是先產(chǎn)生中間碼 然后運(yùn)行在不同虛擬機(jī)上
動(dòng)態(tài)運(yùn)行
從上面的幾個(gè)分析來(lái)看 PHP在內(nèi)存管理 變量 函數(shù) 運(yùn)行機(jī)制等幾個(gè)方面都做了大量的工作 所以從原理來(lái)看 PHP 不應(yīng)該存在性能問(wèn)題 性能至少也應(yīng)該和Java 比較接近
這個(gè)時(shí)候就不得不談PHP動(dòng)態(tài)語(yǔ)言的特性所帶來(lái)的性能問(wèn)題了 由于PHP是動(dòng)態(tài)運(yùn)行時(shí) 所以所有的變量 函數(shù) 對(duì)象調(diào)用 作用域?qū)崿F(xiàn)等等都是在 執(zhí)行階段中才確定的 這個(gè)從根本上決定了PHP性能中很難改變的一些東西 在C/C++等能夠在靜態(tài)編譯階段確定的變量 函數(shù) 在PHP中需要在動(dòng)態(tài)運(yùn)行 中確定 也就決定了PHP中間碼不能直接運(yùn)行而需要運(yùn)行在Zend Engine上
說(shuō)到PHP變量的具體實(shí)現(xiàn) 又不得不說(shuō)一個(gè)東西了 Hashtable Hashtable可以說(shuō)在PHP靈魂之一 在PHP內(nèi)部廣泛用到 包含變量符號(hào)棧 函數(shù)符號(hào)棧等等都是基于hashtable的
以PHP變量為例來(lái)說(shuō)明下PHP的動(dòng)態(tài)運(yùn)行特點(diǎn) 比如說(shuō)代碼
?php
$var?=?“hello ?blog xiuwz ”;
?
該代碼的執(zhí)行結(jié)果就是在變量符號(hào)棧(是一個(gè)hashtable)中新增一個(gè)項(xiàng)
當(dāng)要使用到該變量時(shí)候 就去變量符合棧中去查找(也就是變量調(diào)用對(duì)出了一個(gè)hash查找的過(guò)程)
同樣對(duì)于函數(shù)調(diào)用也基本上類似有一個(gè)函數(shù)符號(hào)棧(hashtable)
其實(shí)關(guān)于動(dòng)態(tài)運(yùn)行的變量查找特點(diǎn) 在PHP的運(yùn)行機(jī)制中也能看出一些 PHP代碼通過(guò)解釋 編譯后的流程下圖
圖 PHP運(yùn)行實(shí)例
從上圖可以看出 PHP代碼在pile之后 產(chǎn)出的了類符號(hào)表 函數(shù)符號(hào)表 和OPCODE 在真正執(zhí)行的時(shí)候 zend Engine會(huì)根據(jù)op code去對(duì)應(yīng)的符號(hào)表中進(jìn)行查找 處理
從某種程度上 在這種問(wèn)題的上 很難找到解決方案 因?yàn)檫@是由于PHP語(yǔ)言的動(dòng)態(tài)特性所決定的 但是在國(guó)內(nèi)外也有不少的人在尋找解決方案 因?yàn)?通過(guò)這樣 能夠從根本上完全的優(yōu)化PHP 典型的列子有facebook的hiphop
結(jié)論
從上面分析來(lái)看 在基礎(chǔ)的內(nèi)存管理 變量 函數(shù) 運(yùn)行機(jī)制方面 PHP本身并不會(huì)存在明顯的性能差異 但由于PHP的動(dòng)態(tài)運(yùn)行特性 決定了 PHP和其他的編譯型語(yǔ)言相比 所有的變量查找 函數(shù)運(yùn)行等等都會(huì)多一些hash查找的CPU開(kāi)銷和額外的內(nèi)存開(kāi)銷 至于這種開(kāi)銷具體有多大 可以通過(guò)后 續(xù)的基準(zhǔn)性能和對(duì)比分析得出
因此 也可以大體看出PHP不太適合的一些場(chǎng)景 大量計(jì)算性任務(wù) 大數(shù)據(jù)量的運(yùn)算 內(nèi)存要求很嚴(yán)格的應(yīng)用場(chǎng)景 如果要實(shí)現(xiàn)這些功能 也建議通過(guò)擴(kuò)展的方式實(shí)現(xiàn) 然后再提供鉤子函數(shù)給PHP調(diào)用 這樣可以減低內(nèi)部計(jì)算的變量 函數(shù)等系列開(kāi)銷
基準(zhǔn)性能
對(duì)于PHP基準(zhǔn)性能 目前缺少標(biāo)準(zhǔn)的數(shù)據(jù) 大多數(shù)同學(xué)都存在感性的認(rèn)識(shí) 有人認(rèn)為 QPS就是PHP的極限了 此外 對(duì)于框架的性能和框架對(duì)性能的影響很沒(méi)有響應(yīng)的權(quán)威數(shù)字
本章節(jié)的目的是給出一個(gè)基準(zhǔn)的參考性能指標(biāo) 通過(guò)數(shù)據(jù)給大家一個(gè)直觀的了解
具體的基準(zhǔn)性能有以下幾個(gè)方面
裸PHP性能 完成基本的功能
裸框架的性能 只做最簡(jiǎn)單的路由分發(fā) 只走通核心功能
標(biāo)準(zhǔn)模塊的基準(zhǔn)性能 所謂標(biāo)準(zhǔn)模塊的基準(zhǔn)性能 是指一個(gè)具有完整服務(wù)模塊功能的基準(zhǔn)性能
環(huán)境說(shuō)明
測(cè)試環(huán)境
Uname aPnux db forum test db baidu _ # SMP Wed Aug : : CST x _ x _ x _ GNU/Pnux
Red Hat Enterprise Pnux AS release (Nahant Update )
Intel(R) Xeon(R) CPU?????????? E ? @ GHz
軟件相關(guān)
Nginx nginx version: nginx/ ? built by gcc (Red Hat )
Php (采用php fpm)
PHP (cP) (built: Mar? : : )
Copyright (c) The PHP Group
Zend Engine v Copyright (c) Zend Technologies
with eAccelerator v Copyright (c) eAccelerator by eAccelerator
bingo
PHP框架
其他說(shuō)明
目標(biāo)機(jī)器的部署方式 nginx php fpm php腳本
測(cè)試壓力機(jī)器和目標(biāo)機(jī)器獨(dú)立部署
裸PHP性能
最簡(jiǎn)單的PHP腳本
?php
require_once?‘ /actions/indexAction php’;
$objAction?=?new?indexAction();
$objAction init();
$objAction execute();
?
Acitons/indexAction php里面的代碼如下
?php
class?indexAction
{
pubPc?function?execute()
{
echo?‘hello ?world!’;
}
}
?
通過(guò)壓力工具測(cè)試結(jié)果如下
裸PHP框架性能
為了和 的對(duì)比 基于bingo 框架實(shí)現(xiàn)了類似的功能 代碼如下
?php
require_once?‘Bingo/Controller/Front php’;
$objFrontController?=?Bingo_Controller_Front::getInstance(array(
‘a(chǎn)ctionDir’?=?‘ /actions’
));
$objFrontController dispatch();
壓力測(cè)試結(jié)果如下
從該測(cè)試結(jié)果可以看出 框架雖然有一定的消耗 但對(duì)整體的性能來(lái)說(shuō)影響是非常小的
標(biāo)準(zhǔn)PHP模塊的基準(zhǔn)性能
所謂標(biāo)準(zhǔn)PHP模塊 是指一個(gè)PHP模塊所必須要具體的基本功能
路由分發(fā)
自動(dòng)加載
LOG初始化Notice日志打印 所以的UI請(qǐng)求都一條標(biāo)準(zhǔn)的日志
錯(cuò)誤處理
時(shí)間校正
自動(dòng)計(jì)算每個(gè)階段耗時(shí)開(kāi)銷
編碼識(shí)別編碼轉(zhuǎn)化
標(biāo)準(zhǔn)配置文件的解析和調(diào)用
采用bingo 的代碼自動(dòng)生成工具產(chǎn)生標(biāo)準(zhǔn)的測(cè)試PHP模塊 test
測(cè)試結(jié)果如下
結(jié)論
從測(cè)試數(shù)據(jù)的結(jié)論來(lái)看 PHP本身的性能還是可以的 基準(zhǔn)性能完全能夠達(dá)到幾千甚至上W的QPS 至于為什么在大多數(shù)的PHP模塊中表現(xiàn)不佳 其實(shí)這個(gè)時(shí)候更應(yīng)該去找出系統(tǒng)的瓶頸點(diǎn) 而是簡(jiǎn)單的說(shuō)OK PHP不行 那我們換C來(lái)搞吧 (下一個(gè)章節(jié) 會(huì)通過(guò)一些例子來(lái)對(duì)比 采用C來(lái)處理不見(jiàn)得有特 別的優(yōu)勢(shì))
通過(guò)基準(zhǔn)數(shù)據(jù) 可以得出以下幾個(gè)具體的結(jié)論
PHP本身性能也很不錯(cuò) 簡(jiǎn)單功能下能夠達(dá)到 QPS 極限也能過(guò)W
PHP框架本身對(duì)性能影響非常有限 尤其是在有一定業(yè)務(wù)邏輯和數(shù)據(jù)交互的情況下 幾乎可以忽略
一個(gè)標(biāo)準(zhǔn)的PHP模塊 基準(zhǔn)性能能夠達(dá)到 QPS( cpu idle)
對(duì)比分析
lishixinzhi/Article/program/PHP/201311/21287
在做數(shù)據(jù)接口時(shí) 我們通常要獲取第三方數(shù)據(jù)接口或者給第三方提供數(shù)據(jù)接口 而這些數(shù)據(jù)格式通常是以XML或者JSON格式傳輸 本文將介紹如何使用PHP生成XML格式數(shù)據(jù)供第三方調(diào)用以及如何獲取第三方提供的XML數(shù)據(jù)
生成XML格式數(shù)據(jù)
我們假設(shè)系統(tǒng)中有一張學(xué)生信息表student 需要提供給第三方調(diào)用 并有id name sex age分別記錄學(xué)生的姓名 性別 年齡等信息
CREATE TABLE `student` (
`id` int( ) NOT NULL auto_increment
`name` varchar( ) NOT NULL
`sex` varchar( ) NOT NULL
`age` *** allint( ) NOT NULL default
PRIMARY KEY? (`id`)
) ENGINE=MyISAM? DEFAULT CHARSET=utf ;
首先 建立createXML php文件 先連接數(shù)據(jù)庫(kù) 獲取數(shù)據(jù)
include_once ( connect php ) //連接數(shù)據(jù)庫(kù)
$sql = select * from student ;
$result = mysql_query($sql) or die( Invalid query: mysql_error())
while ($row = mysql_fetch_array($result)) {
$arr[] = array(
name = $row[ name ]
sex = $row[ sex ]
age = $row[ age ]
)
}
這個(gè)時(shí)候 數(shù)據(jù)就保存在$arr中 你可以使用print_r打印下數(shù)據(jù)測(cè)試
接著 建立xml 循環(huán)數(shù)組 將數(shù)據(jù)寫(xiě)入到xml對(duì)應(yīng)的節(jié)點(diǎn)中
$doc = new DOMDocument( utf ) ? // 聲明版本和編碼
$doc formatOutput = true;
$r = $doc createElement( root )
$doc appendChild($r)
foreach ($arr as $dat) {
$b = $doc createElement( data )
$name = $doc createElement( name )
$name appendChild($doc createTextNode($dat[ name ]))
$b appendChild($name)
$sex = $doc createElement( sex )
$sex appendChild($doc createTextNode($dat[ sex ]))
$b appendChild($sex)
$age = $doc createElement( age )
$age appendChild($doc createTextNode($dat[ age ]))
$b appendChild($age)
$r appendChild($b)
}
echo $doc saveXML()
我們調(diào)用了PHP內(nèi)置的類DOMDocument來(lái)處理與生成xml 最終生成的xml格式請(qǐng)點(diǎn)擊這里看效果
?xml version= encoding= utf ?
root
data
name李王皓/name
sex男/sex
age /age
/data
…
/root
獲取XML格式數(shù)據(jù)
現(xiàn)在我們假設(shè)要從第三方獲取學(xué)生信息 數(shù)據(jù)格式是XML 我們需要使用PHP解析XML 然后將解析后的數(shù)據(jù)顯示或者寫(xiě)入本地?cái)?shù)據(jù)庫(kù) 而這里關(guān)鍵的一步是解析XML
PHP有很多中方法可以解析XML 其中PHP提供了內(nèi)置的XMLReader類可以循序地瀏覽過(guò)xml檔案的節(jié)點(diǎn) 你可以想像成游標(biāo)走過(guò)整份文件的節(jié)點(diǎn) 并抓取需要的內(nèi)容 使用XMLReader是高效的 尤其是讀取非常大的xml數(shù)據(jù) 相對(duì)其他方法 使用XMLReader消耗內(nèi)存非常少
header( Content type:text/; Charset=utf )
$url = // helloweba /demo/importXML/createXML php ;
$reader = new XMLReader() ? //實(shí)例化XMLReader
$reader open($url) //獲取xml
$i= ;
while ($reader read()) {
if ($reader nodeType == XMLReader::TEXT) { //判斷node類型
$m = $i% ;
if($m== )
$name = $reader value;? //讀取node值
if($m== )
$sex = $reader value;
if($m== ){
$age = $reader value;
$arr[] = array(
name = $name
sex = $sex
age = $age
)
}
$i++;
}
}
//print_r($arr)
lishixinzhi/Article/program/PHP/201311/21636
準(zhǔn)備工作 首先要下載如下軟件,推薦到官網(wǎng)下載,如果你是像我一樣只是測(cè)試,那么到skycn.com下載吧,這樣比較快。
Apache
最流行的HTTP服務(wù)器軟件之一。快速、可靠、可通過(guò)簡(jiǎn)單的API擴(kuò)展,Perl/Python解釋器可被編譯到服務(wù)器中,完全免費(fèi),完全源代碼開(kāi)放。
我下載的是for Windows版本,目前最新版本是:2.0.54
PHP
PHP 是一種 HTML 內(nèi)嵌式的語(yǔ)言。而PHP獨(dú)特的語(yǔ)法混合了 C、Java、Perl 以及 PHP 式的新語(yǔ)法。它可以比 CGI 或者 Perl 更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。
我下載的是for Windows版本,目前最新版本是:5.0.4
MySQL
是一個(gè)多線程的,結(jié)構(gòu)化查詢語(yǔ)言(SQL)數(shù)據(jù)庫(kù)服務(wù)器。SQL 在世界上是最流行的數(shù)據(jù)庫(kù)語(yǔ)言。MySQL 的執(zhí)行性能非常高,運(yùn)行速度非???,并非常容易使用。
我下載的是for Windows版本,目前最新版本是:5.0.4 Beta
phpMyAdmin
phpMyAdmin 是一個(gè)用PHP編寫(xiě)的,可以通過(guò)互聯(lián)網(wǎng)控制和操作MySQL。通過(guò)phpMyAdmin可以完全對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
我下載的是for Windows版本,目前最新版本是:2.6.2-pl1
安裝apache和PHP
下面是我的安裝記錄:
選擇80端口,將apache安裝在 e:\apache下。
配置apache里的httpd.conf文件(conf目錄下)
找到 DocumentRoot E:/apache/Apache2/htdocs 將其改為WEB目錄E:/htdocs
找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php default.php default.html
選擇模塊化模式安裝
找到 #LoadModule ssl_module modules/mod_ssl.so 這行,在此行后加入一行
LoadModule php5_module e:/php/php5apache2.dll
找到 AddType application/x-gzip .gz .tgz 這行,在此行后加入一行
AddType application/x-httpd-php .php
將php-5.0.4-Win32.zip里內(nèi)容解壓到e:\php里,找到php.ini-recommended,重命名為php.ini并拷貝到windows目錄下。
NTFS上記得給服務(wù)器開(kāi)PHP.ini的讀權(quán)限。
查找extension_dir后面的改為e:/php/ext
查找Windows Extensions,把下面有一排的;extension=php_***.dll的分號(hào)去掉,就是支持組件了。我把 extension=php_gd2.dll extension=php_mbstring.dll extension=php_mysql.dll 的分號(hào)去掉了。
php5默認(rèn)不支持mysql了,所以要為他添加支持,除了extension=php_mysql.dll去分號(hào)之外,在php目錄里有個(gè)libmysql.dll文件,把它復(fù)制到系統(tǒng)的system32文件夾下,復(fù)制php.ini到windows目錄下。
此時(shí)PHP環(huán)境基本已經(jīng)配置成功
在WEB根目錄里建一個(gè)名為test.php的文件內(nèi)容如下
? echo phpinfo(); ?
重新啟動(dòng)apache服務(wù),用瀏覽器打開(kāi)
如果可以看到php配置輸出信息就成功了
安裝mysql
將mysql安裝到指定目錄,然后安裝程序會(huì)引導(dǎo)你一步步配置。不過(guò)奇怪的是最后任務(wù)欄沒(méi)有出現(xiàn)Mysql的圖標(biāo)。
修改mysql數(shù)據(jù)庫(kù)的root密碼
用cmd進(jìn)入命今行模式輸入如下命令: ( 注: d:\mysql 為mysql安裝目錄)
cd d:\mysql\bin
mysqladmin -u root -p password 123456
回車出現(xiàn)
Enter password: ( 注:這是叫你輸入原密碼. 剛安裝時(shí)密碼為空,所以直接回車即可)
此時(shí)mysql 中賬號(hào) root 的密碼 被改為 123456 安裝完畢
配置php.ini并測(cè)試mysql
找到extension_dir = ./ 改為 extension_dir = e:/php/ext
找到
;extension=php_mysql.dll
將';'去掉改為
extension=php_mysql.dll
找到
;session.save_path = /tmp
將';'去掉 設(shè)置你保存session的目錄,如
session.save_path = e:/php/session_temp
重啟apache服務(wù)
在Web根目錄下建立testdb.php文件內(nèi)容如下:
?php
$link=mysql_connect('localhost','root','123456');
if(!$link) echo fail;
else echo success;
mysql_close();
?
用瀏覽器打開(kāi) 如果輸出success就OK了
phpmyadmin的安裝配置
將phpMyAdmin-V2.6.2-pl1.zip解壓到WEB根目錄中去,重命名文件夾為phpmyadmin或其它
打開(kāi)phpmyadmin 目錄中的 config.inc.php
找到
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';
分別填上用戶名和密碼
php導(dǎo)出大量數(shù)據(jù)Excel的具體操作步驟如下:
1、使用phpstudy搭建一個(gè)測(cè)試平臺(tái),直接訪問(wèn)數(shù)據(jù)庫(kù)。
2、下載的phpcms安裝包拷貝到IIS目錄,開(kāi)通訪問(wèn),即可搭建成功。
3、登錄網(wǎng)站后臺(tái),系統(tǒng)權(quán)限,文件目錄以及數(shù)據(jù)庫(kù)等功能,進(jìn)行管理。
4、在phpcms后臺(tái),擴(kuò)展,數(shù)據(jù)庫(kù)工具,數(shù)據(jù)庫(kù)導(dǎo)出,程序池選擇phpcmsv9,開(kāi)始備份數(shù)據(jù)。
5、打開(kāi)IIS網(wǎng)站目錄,在D:\wwwroot\kmxy\wwwroot\caches\bakup\default文件夾,查看導(dǎo)出的數(shù)據(jù)庫(kù)文件。
6、登錄phpmyadmin,選擇數(shù)據(jù)庫(kù)導(dǎo)出,選擇Excel格式,即可導(dǎo)出。
本文題目:php生成測(cè)試數(shù)據(jù) php測(cè)試用例
當(dāng)前地址:http://muchs.cn/article46/dojhihg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、定制開(kāi)發(fā)、全網(wǎng)營(yíng)銷推廣、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)