Php DataTable büyük veri listeleme
Merhabalar
DataTable üzerimden yaklaşlık 50 bin civarındaki veriyi listeleme yapmaya çalışıyorum.
Fakat veriler çok olduğu için ve sürekli arttığı için sayfayı fazlasıyla yavaş yükeleniyor ve sistemi yoruyor.
Sorunu çözmek için yapıktlarım
Listeleme sayfasında php ile sayfalama yaptım. Fakat bu sefer DataTable üzerindeki Excel çıktısı alma özelliği doğal olarak gösterilen kayıtları dışarıya aktarıyor sadece.
Arama özelliği tüm veriler yerine gelen verilerde arama yapıyor.
Bu verileri sayfayı çok yormadan listelemek ve aynı zaman da arama yapmak, istenildiği zaman excel çıktısı olarak almak istiyorum.
Bunun için neler yapabilirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Merhabalar,
DataTable ile büyük verileri nasıl çekebileceğimi araştırırken aşağıda yazıya rastladım. Burada Datatable server-side ile yapabileceğimi gördüm.
https://datatables.net/forums/discussion/8789/tips-for-using-datatables-with-very-large-data-sets
Bu işlem için ssp.class.php isimli bir dosyaya ihtiyaç duyuluyor. Aşağıda linkini verdim.
https://github.com/DataTables/DataTablesSrc/blob/master/examples/server_side/scripts/ssp.class.php
Bu çekilde ajax ile dosyaları kolaylıkla ve hızlı bir şekilde çekebildim. Fakat sql sorgunuzda JOIN veya GROUP BY kullanımı varsa
bunu yapamıyorsunuz. Çünkü bunun için bir bölüm bulunmuyor.
Bu sorunu da çözmek için SQL de View oluşturarak bu sorunu çözebileceğimi gördüm. Sorgu ile view oluşturdum ve daha sonra gerekli yere tablo
ismini yazarak istediğim sonucu aldım.
https://stackoverflow.com/questions/59712722/calling-a-function-in-datatable-server-side-processing (2. Adım)
Verilerde arama yaparken hiç bir sorun yok. Tüm veriler içerisinde arama yapıyor. Ama verilerin çıktısını excel veya pdf olarak almak isterseniz
o an sayfada gösterilen verileri aktarıyor. Bunun için de başka bir excel aktarma işlemi yapmam gerekecek.
Arama yapmak için serverSide özelliğini kullanabilirsiniz fakat tüm tabloyu dışa aktarmak için ya tüm verileri istemci tarafına çekmeniz ya da bu işi sunucu tarafında halletmeniz gerekiyor diyor resmî dokümanlarda.
https://datatables.net/faqs/index#buttons