Virüsler için tarama PHP yüklenenler

3 Cevap php

Şu anda bir başvuru formunun bir parçası olarak yüklenen dosyaları taramak için aşağıdaki kodu kullanıyorum:

$safe_path = escapeshellarg($dir . $file);
$command = '/usr/bin/clamscan --stdout ' . $safe_path;
$out = '';
$int = -1;
exec($command, $out, $int);

if ($int == 0) {
    // all good;
} else {
    // VIRUS!;
}

Bu çalışıyor, ama yavaş. Herkes verecek bir) herhangi bir öneriniz var. şeyleri hızlandırmak ve b). (örneğin, ben vb) (sistemi vs) (exec yararları tamamen net değilim), genellikle komut geliştirmek?

Hızı geliştirilmiş edilemezse o zaman ben ideal mesaj "dosyaları taranırken sabırlı olun" geçici çeşit göstermek istiyorum, ama ya bu konuda gitmek nasıl emin değilim ediyorum.

EDIT: Üzgünüm, tarama söz konusu uygulama geçerli (yani virüs ücretsiz) dosyaları olmadan kabul edilmeyecektir gibi zamanında yapılması gerektiğini söyledi olmalıdır.

3 Cevap

Anında kullanıcıya sonuçlarını görüntülemek için ihtiyacınız yoksa, daha sonra tarama için bir veritabanı tabloya dosyayı ekleyebilirsiniz.

Sonra tablo tarama sonuçları ve güncellemek için yeni bir süreç çatal olabilir. Burada iyi bir örnek var: http://robert.accettura.com/blog/2006/09/14/asynchronous-processing-with-php/.

Kesinlikle aynı isteği dahilinde sonuçlarını görüntülemek için gerekiyorsa ben ama önce AJAX sonuç isteyen bir geçici sayfa çıktısı dediği gibi, o zaman tam olarak bunu yapabilirdi; Tarama bittikten sonra, sonuç sayfasına yönlendirir.

JavaScript kullanmak istemiyorsanız, o zaman basit bir meta yenileme etiketi hile yapardı.

Yerine Clamscan clamdscan kullanın. Clamdscan her zaman çalışıyor yerleşik daemon kullanır ve (clamscande yaptığı gibi) virüs masalar her zaman yüklemek zorunda değildir.

Ideal nerede toplu bu taramalar yapabilirsiniz farklı bir kutu üzerinde, ayrı bir uygulama kurmak. O kutu bu önuç servis okumak ve kullanıcıya geri rapor veritabanına durum var güncelleyebilirsiniz.