在設計隨機模板功能時,有一項功能是用戶對現在的內容進行隨機指定模板,按以往的算法,只能用如下方式去弄:
首先從數據庫裡讀出所有的記錄,然後通過PHP隨機獲得一個模板名,然後對當前的記錄進行更新,這樣就需要遍歷一次數據庫,有多少條記錄就進行多少次Update操作,顯然是效率很低下的一種方法,MySQL本身沒的提供隨機更新的方式,但可以利用一定的技巧達到這目的。
大家可以分析下面這個段程序:
$totalTmp = count($tamplate_arr);
for($i=0; $i < 10; $i++)
{
$temp = $tamplate_arr[mt_rand(0, $totalTmp)];
$dsql->ExecuteNoneQuery(" Update `ddmx_addonarticle` set templet='$temp' where RIGHT(aid, 1)='$i' ");
}
按這種方式,同樣達到了隨機的目的,當然缺點就是沒前者那麼混亂,如果想要更混亂些,可以通過這原理多設置一些種子數,例如說把RIGHT(aid, 2)='$i' 取到兩位,然後並不按10-99這樣去更新,而是從中抽出上部份進行更新,這樣就基本上達到了目的,但執行性能方面,遠遠優於前者。