5
Mój skrypt otwiera dwa pliki: whitelist.txt i blacklist.txt wypełnione adresami IP.Dodawanie efektywności Skrypt do mojej czarnej listy-białej listy IP
Chcę dodać wszystkie wystąpienia ip w blacklist.txt, które nie istnieją w whitelist.txt do zmiennej.
Ten skrypt zawiera maksymalnie 2 znaki wieloznaczne.
Działa teraz przez 37 minut, a ja chciałbym, aby było szybciej.
$blacklist = file_get_contents("blacklist.txt");
$whitelist = file_get_contents("whitelist.txt");
$black_ips = explode("\n", $blacklist);
$white_ips = explode("\n", $whitelist);
$wildcard = array();
for($i = 0; $i < 256; $i++) {
$wildcard[] = $i;
}
foreach($black_ips as $bkey => $black) {
if(stristr($black, ".")) {
foreach ($white_ips as $wkey => $white) {
$count = substr_count($white, '*');
if($count) {
switch($count){
case 1:
foreach ($wildcard as $i) {
if(substr($white, 0, strlen($white) - 1) . $i == $black){
continue 4;
}
}
break;
case 2:
foreach ($wildcard as $i) {
foreach ($wildcard as $k) {
if(substr($white, 0, strlen($white) - 3) . $i . '.' . $k == $black){
continue 5;
}
}
}
break;
}
}
else if($black == $white) {
continue 2;
}
}
$nginxdeny .= "deny " . $black . ";\n";
}
}
Zadziała tylko dla jednego zamiennika dla mnie. Czarny: 1.0.214.36 Biały: 1.0. *. * To było bardzo szybkie, ale – Brandacus
Zdrap to teraz działające dla mnie. Myślałem, że to zrobiło:/Tablice z wartościami wyodrębnionymi z pliku nie działają z dwoma znakami wieloznacznymi, ale tablice z wartościami zakodowanymi na stałe działają. Zrzuciłem tablicę odczytaną z pliku i odczytałem ją tak samo, jak tablica wyglądałaby na sztywno. To jest dziwne. Jakie są Twoje myśli? – Brandacus
Po prostu literówka w kodzie, przepraszam :) Naprawiono to teraz. Wzór dla * to '\ d {1,2}', a teraz '\ d {1,3}'. –