Ben 1000 + kayıtları ile dolu bir MySQL veritabanı tablo var, 5000 kayıtları Diyelim ki. Her kayıt false (0)
bir processed
boolean bayrak, varsayılan vardır. Ne yapmak istiyorum cron'nun bir PHP komut dosyası çalıştırmak her dakika olması. Onun kodu böyle bir şey olacaktır:
<?php
process();
function process()
{
$sql = "SELECT id FROM items WHERE processed = '0' ORDER BY id ASC LIMIT 1";
$result = $this->db->query($sql);
if (! $result->has_rows())
die;
$id = $result->getSingle('id');
processItem($id); //Will set processed to 1 after processing is done
process();
}
?>
Bu yukarıdaki kod, un işlenmiş olan bir sonraki kayıt için id alır bunu işler ve daha sonra artık kalmayana kadar bu işlemi tekrarlar tekrar hangi process()
işlevini çağırır, ne çok açık olmalıdır yürütme durdurmak hangi noktada işlenecek öğeler.
Her dakika çalıştırmak için Cron'un bu senaryoyu koyarak, ben bu komut birden çok örneği aynı anda tüm öğeleri işleme çalışan, bu yüzden yerine bir defada tek bir öğe işleme için umut, 5-10 + öğeler aynı anda işleme almak olabilir.
1) Bu onu planlıyorum yol çalışması olacak mı? Dikkat etmeniz gereken iyileştirmeler / şeyler için herhangi bir öneriniz var mı?
2) Ben komut dosyası örneklerini çalışan sayısı için bir sayaç set var, bu yüzden bir cron işi başlar her 50 (?) Örnekleri bu işlem olmadan çıkmak istiyorum çalışıyorsa, bu, sayacı kontrol eder mi. Bu çok fazla bellek kullanan çok sayıda çalışan süreçleri alarak çökmesini sunucu tutabilir? Herhangi bir düşünce?