2017-09-24 82 views
0

我有一個小問題,以獲得最快捷的方式來工作我的PHP服務器(製作遊戲)。什麼是最快速的工作方式PHP腳本

這是我的功能PHP:

function getSomeInfoByDataId($id) { 
    $arr = mysql_fetch_array(mysql_query("SELECT * FROM maps WHERE id='".$id."' LIMIT 1;")); 
    if(!empty($arr)) { 
     return $arr; 
    } 
} 
//$user - is array with all details from loged-in user 

問題: 什麼是加速PHP服務器最好,最快的方法是什麼?

路1

$myArray = array(
    'map_id' => getSomeInfoByDataId($user['map'])['id'], 
    'map_name' => getSomeInfoByDataId($user['map'])['name'], 
    'map_pvp' => getSomeInfoByDataId($user['map'])['pvp'], 
    'map_img' => getSomeInfoByDataId($user['map'])['img'] 
); 

路2

$mapInfo = getSomeInfoByDataId($user['map']); 
$myArray = array(
    'map_id' => $mapInfo['id'], 
    'map_name' => $mapInfo['name'], 
    'map_pvp' => $mapInfo['pvp'], 
    'map_img' => $mapInfo['img'] 
); 

很抱歉,如果這個問題是有點瘋狂,但對我來說非常重要。

+2

目前代碼有多慢?你有沒有基準每種方法?你不應該使用'mysql_ *'函數。 – chris85

+0

https://stackoverflow.com/q/60174/5905665 –

+1

對數據庫的請求越少越好,因爲數據庫訪問是一個開銷....選項1使4個獨立的數據庫請求,選項2使一個請求....雖然你應該已經能夠自己測量差異了 –

回答

0

選項1使您可以調用數據庫四次以獲取與第一次調用中獲得的信息完全相同的信息。

從邏輯上思考,如何做同樣的事情比做一次快四倍?

選項2確實是最快的,但是,您甚至不需要將結果存儲在$myArray中,因爲您已在$mapInfo中擁有該數據。

$myArray所具有的唯一好處是每個值都有一個「易於閱讀」的鍵,這些鍵已經足夠容易閱讀了。

編輯:正如在評論中說的,你正在使用不贊成的函數來調用你的數據庫。請注意使用PDO prepared statements來避免SQL注入。

相關問題