簡體   English   中英

PHP性能-數組函數與數據庫調用,哪種邏輯更好?

[英]PHP performance - array functions vs database calls, which logic is better?

我有一些有趣的問題,可以通過幾種不同的方法來解決。 我正在為一個小工具創建一個報告頁面,該工具將從命令行上運行的命令的輸出中獲取信息,並將匯總信息拆分成易於閱讀的表格。

我的代碼從運行cmd並過濾掉一些輸入開始。 我在Windows中運行它,所以它使用find而不是grep。

這是我可能從命令中獲取的幾行示例,每行作為數組中的元素返回:

Client client1 2011/06/16 root /appl/now 'area1: info'
Client client2 2011/06/16 root /appl/now 'area2: adds'
Client client3 2011/06/16 root /appl/now 'area3: text'
Client client4 2011/06/16 root /appl/now 'area4: text'
Client client5 2011/06/16 root /appl/now 'area3: text'
Client client6 2011/06/16 root /appl/now 'area3: adds'
Client client7 2011/06/16 root /appl/now 'area1: info'

我需要做的是從上述輸出中提取每一行,並根據area<#>條目將它們分組。 那里的每個唯一字符串( infoadds等)都是一個表,每個具有該值的條目都將運行另一個cmd,並將輸出存儲在表中。 因此,對於上面的輸出,我將有4個表; area1將具有2個條目, area2將具有1個條目, area3將有3項, area4將具有1個條目。

這些值存儲在數據庫中,因此我可以執行select語句來獲取它們,然后將它們與原始數組進行比較,或者遍歷該數組並將每個唯一值存儲在另一個數組中。 當我有一個很大的數據集時,第一個選項似乎更快,而當我有一個小的數據集時,第二個選項似乎更快。 哪種方法更快? 有沒有我沒想到的更好的方法?

現在,為了將所有值的數組與唯一值的數組進行比較以便將它們分組到單獨的表中,最快的方法是什么? 我當前正在遍歷,如果值匹配唯一值,則將該元素添加到表中。 這是通過嵌套的foreach循環完成的,效率不是很高。 有什么建議么?

與嵌套循環設計相反,您應該創建一個組數組並僅對數據集進行一次迭代。 它看起來像:

<?php 
foreach($dataset as $row):
    $groups[$row['area_key']][] = $row;
endforeach; 
?>

然后,您將通過$groups數組創建表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM