veri ağır bir miktar düzgün çalışmıyor üzerinde foreach ve preg_match

0 Cevap php

Ben dosyaları, bir anahtar kelime dizilerine (~ 20k hat) dolu olması, diğer normal ifade (~ 2.5k) doludur.

Ben her regexp ile her anahtar kelimeyi test ve maçlar tek yazdırmak istiyorum. Benim dosyaları test ve etrafında 22 750 000 testleri yapar. Ben aşağıdaki kodu kullanıyorum:

$count = 0;
$countM = 0;
foreach ($arrayRegexp as $r) {
    foreach ($arrayKeywords as $k) {
        $count++;
        if (preg_match($r, $k, $match) {
            $countM++;
            echo $k.' matched with keywords '.$match[1].'<br/>';
        }
    }
}
echo "$count tests with $countM matches.";

Ne yazık ki, bir süre hesaplandıktan sonra, gerçek maçlar sadece parçalar gösterilir ve sayıları tutarak son satırı görüntüler asla. Ne daha da garip olduğunu ben iki foreach ve sayım ekranı sadece tutmak için gebelik bölümüne yorum varsa, her şey gayet iyi çalışıyor olmasıdır.

Ben bu işlenecek verinin aşırı miktarda nedeniyle olduğuna inanıyorum, ancak operasyonların bu tür için takip etmedi öneriler olup olmadığını bilmek istiyorum. Kullandığım normal ifadeler çok karmaşık ve ben başka bir şey değiştiremezsiniz.

Fikirler kimse?


Teşekkürler

İskoçyalı

0 Cevap