Burada iki konu var:
# 1, sen MD5 hash hesaplamak birkaç farklı yolu vardır:
- Eğer gibi yapmak ve bir dizge olarak PHP içine yüklemek ve PHP'nin
md5()
kullanın
- Kullanım PHP'nin
md5_file()
- PHP 5.1 + Eğer
md5_file
belleğe tamamen yüklenmesini engellemek için md5
ya da biriyle PHP'nin akışları API kullanabilirsiniz
exec()
sistemin md5sum
komutunu çağırmak için kullanın
- Karma hesaplamak için MySQL'in
MD5()
işlevini kullanın
Bunların hepsi uygulamak için önemsiz olduğundan, bellek kullanımı ve hız için hepsini uygulamak ve benchmark için kolay olurdu. İşte md5_file
exec
PHP'nin çok daha hızlı olması yoluyla some benchmarks gösteren sistem md5 olan dosya boyutu arttıkça. O yol yapıyor kesinlikle kadarıyla bellek kullanımı söz konusu olduğunda kötü bir yoldur.
# 2, mysql_real_escape_string
, bir veritabanı sorgusu gerçekleştirir, böylece aslında bir dize olarak geri alma ve yeniden iletme, veritabanına blob veri aktarımı ediyoruz (!) INSERT sorgusu ile. Yani için / DB sunucudan 3x yerine 1x seyahat ve 2x PHP bellek kullanıyor.
Bu PHP5 prepared statements kullanmak ve sadece bir kez bu verileri veritabanına göndermek için daha verimli olacak. Bağlanmış makale bölümünü okuyun, bunu parametreleri bağlayıcıdır zaman, parçalar DB blob veri akışı için blob tipini kullanabilirsiniz belirtiyor görürsünüz. PHP docs for mysqli_stmt::send_long_data
a> senin gibi bir blob sütuna bir dosya ekler bu büyük bir basit bir örnek var.
Bunu yaparak, ve sistem md5 komutu ile akışları API, md5_file
veya exec
birini kullanarak, sen demektir, hiç belleğe dosyanın tamamını yüklemeden tüm INSERT yapabilirsiniz işlemleri sizin dizi için bellek kullanımını istediğiniz gibi düşük olabilir!