PHP-Performance bei Array-Verarbeitung

rethus

Erfahrenes Mitglied
Ich habe folgendenmehrdimensionalen Array:
Code:
var $servers=array(
	array("ac","whois.nic.ac","No match"),
	array("ac.cn","whois.cnnic.net.cn","no matching record"),
	array("ac.jp","whois.nic.ad.jp","No match"),
	array("ac.uk","whois.ja.net","No such domain"),
	array("ad.jp","whois.nic.ad.jp","No match"),
	);

Derzeit habe ich folgende Schleife, die den Array ausließt:
Code:
for($i=0;$i<count($this->servers);$i++){
			if($this->servers[$i][0] == $tldname){
				$server	 = $this->servers[$i][1];
				$full_dom= $this->servers[$i][3];
				$found=true;
			}
		}

Nun scheint es mir nicht sonderlich Performant, das der gesamte Array durchlaufen werden muss, um an einen Wert des Arrays zu kommen.

Hat jemand von Euch eine Idee, wie man die Schleife optimieren kann?
 
Du könntest die tld direckt als index nehmen..


PHP:
var $servers=array(
	"ac" =>array("whois.nic.ac","No match"),
	"ac.cn" => array("whois.cnnic.net.cn","no matching record"),
	"ac.jp" => array("whois.nic.ad.jp","No match"),
	"ac.uk" => array("whois.ja.net","No such domain"),
	"ad.jp" => array("whois.nic.ad.jp","No match"),
	);

if(array_key_exists($servers, 'ac')){
// bla bla
}
 
Du musst nicht mehr das ganze Array durchsuchen sondern kannst direckt auf die Elemte zugreifen. Ich denke das bringt schon geschwindigkeit mit sich. Aber in erster Linie erleichtert es den zugriff

PHP:
$server['ac'][0]
ist z.B. die Whoisserver Adresse. Aber wunder brauchst du dir nicht davon versprechen, das was beim whois wirklich Zeit braucht ist das abfragen, nicht das herausfinden aus dem array. 5 Sekunden sind sicherlich vollkommen normal die er allein dafür braucht.
 
Es bringt definitiv Performance da nicht mehr in dem array linear nach einem Eintrag gesucht werden muss sondern per Hashtabelle die richtige Position errechnet wird, bei so nem Mini-Array macht das noch kaum was aus, aber lass mal Milliarden Elemente drinne haben^^
 
Zurück