Nasıl php kullanarak db mysql büyük dosyaları ekleyebilirsiniz?

5 Cevap php

Benim mysql veritabanı boyutu 10M max büyük bir dosya yüklemek istiyorum. I "10485760" = 10M PHP'nin kendi dosya yükleme limiti değişti. Htaccess kullanarak, ben herhangi bir sorun olmadan 10M büyüklüğüne kadar dosya yüklemek mümkün duyuyorum.

Ama bu fazla ise, veritabanındaki dosya eklemek o boyuttaki 1M. Olamaz

i tüm dosya verilerini okumak ve bir dize bir LONGBLOB alana sokulacak gibi insert sorgusuna geçmek için file_get_contents kullanıyorum.

I dosya düzgün yüklenen incelemek için print_r ($ _FILES) kullanabilirsiniz ama ama 1M boyutu daha fazla olan dosyaları veritabanına eklenen varlık değildir. Herhangi bir yardım takdir edilecektir ve ben önümüzdeki 6 saat içinde ihtiyacınız olacak. Yani, yardım lütfen!

5 Cevap

Bildiğim kadarıyla daha hızlı, genellikle ve o çok hızlı bir şekilde büyük olsun ve bunu yavaşlatmak gibi iyi uygulama db dosya saklamak için değil. Bir dizinde dosyayı saklamak ve sonra sadece db dosyasının konumunu saklamak bir şekilde yapmak en iyisidir.

Biz url güvenli dosya ismi adlı dosyası için bir klasör oluşturma ve db klasör adını saklayarak iş yerinde CMS images / pdfs / mpegs vb bunu. Sadece sonra sunum katmanı bunun url yazmak kolaydır.

Sen oluyor (büyük kendisi) INSERT önlenmesi, çok küçük ayarlanmış olabilir MySQL yapılandırma değeri "max_allowed_packet", kontrol etmek isteyecektir.

Bir mysql komut isteminden aşağıdaki çalıştırın:

mysql> show variables like 'max_allowed_packet';

Yeterince geniş olduğundan emin olun. Bu yapılandırma seçeneği görmek hakkında daha fazla bilgi için

MySQL max_allowed_packet

() Mysql_escape_string ve dize yaratılış boyutunu sınırlayarak PHP () mysql_real_escape_string Bu da etkiler.

MySQL için bazı PHP uzantıları LONGBLOB ve LONGTEXT veri türleri ile ilgili sorunlar var. Uzantıları (bir defada blob bir kesimi gönderme) blob akış desteklemiyor olabilir, bu yüzden tek seferde tüm nesneyi göndermek zorunda.

PHP'nin bellek sınırı veya MySQL'in paket boyutu limiti veritabanına gönderebilir bir nesnenin boyutunu sınırlamak Yani, bu izin için PHP ve MySQL ya da üzerinde bazı yapılandırmasını değiştirmek gerekebilir.

Eğer (MySQL için en az üç tane) kullanmakta olduğunuz PHP uzantısı söylemedi, ve size veritabanına blob göndermek için kullandığınız kod herhangi yoktu.

LOAD_FILE function dosya saklamak için MySQL sitesini kullanabilirsiniz, ancak yine max_allowed_packet değeri ve dosya MySQL örneği olarak aynı sunucu üzerinde olması gerektiğini gerçeğini uymak zorunda.