Ben hesaplama şeyler, PHP veya MySQL nereye yapmalıyım?

8 Cevap php

Ben günümüzde şeyler hesaplanması çok yapıyorum. PHP, bu iyi değil biliyorum ama genelde ben değil MySQL PHP daha bu hesaplamalar yapmayı tercih ederler. Ben MySQL kötü olabilir düşündüm. Bazı sayfaları çok yavaş 30 saniyelik süre onlar için yeterli olmadığını yüklendi: Ama bazı performans sorunu bulduk! Yani nerede hesaplamaları yapmak için iyi bir yer olduğunu, ve bunun için herhangi bir ilkeler acaba? Öneriler mutluluk duyacağız.

8 Cevap

Veri sunucu tarafında filtre edilebilir bir RDBMS'yi (GRUPLAMAYI toplayarak, AVG) kullanılarak yapılabilir bir şey, RDBMS yapılmalıdır.

Hesaplama PHP daha uygun olurdu sonra ince, o ile gitmek, ama aksi don't try to do in PHP what a RDBMS was made for. YOU WILL LOSE.

i c + + gibi, bunun için oluşturulan dilde hesaplamaları yapmak söyleyebilirim. Eğer MySQL ve PHP arasında seçim Ama eğer, php daha iyidir.

Sadece darboğazları nerede takip. Eğer bazı hesaplamalar için çalışıyoruz çünkü tablo kilitli alırsa, herkes seçili tablolardaki verileri okumak / yazmak için bekleyen kuyrukta ve kuyruk büyümeye devam edecektir.

MySQL komutları işleme tipik hızlıdır, ancak PHP bir yaygara çok fazla olmadan basit sorunları ele almak gerekir. Tabii ki, tekrar tekrar aynı hesaplama için, veritabanı birden fazla kez ping gerektiği anlamına gelmez.

Sen ve bir kez güncellenmesi bir cron işi var eğer size sonuçları önbelleğe daha iyi olabilir bir gün / saat (barındırma sağlayıcı muhtemelen sizden nefret edecek, onu her dakika yapmayın lütfen).

Kadar filtreleme yapmak ve php içine veri az miktarda getirmek mümkün birleştirme. Minimum veri seti ki var, o zaman, sunucu yükü ne yapıyorsun bağlıdır, ve belki de diğer faktörler.

Eğer eşit ya da bir şeyler yapabiliriz, ve sql yazmak (ve korumak) için aşırı karmaşık değilse, o zaman bunu. Basit matematik, sql genellikle iyi bir bahistir. Dizeleri aynı uzunlukta hakkında sonuna kadar veya büyüyecek dize manipülasyonları için, php, muhtemelen iyi bir bahistir.

En önemli şey, mümkün olduğunca az veri talep etmektir. Verilerin manipülasyonu, en azından ne sql yapabilirim, veri almak ve transfer sekonder.

Yerli MySQL işlevleri çok hızlı. Yani sorgularda mantıklı ne.

Eğer katları sunucuları (örneğin, bir web sunucusu ve DB sunucu) varsa, DB sunucuları sonra web sunucuları çok daha pahalıdır unutmayın, bu yüzden çok fazla trafik veya çok yoğun bir DB sunucu varsa 'ekstra' yapmayın gibi kolayca / verimli bir web sunucu makine üzerinde yavaşlamalar önlemek için ele alınabilir.

cmptrgeekken biz biraz daha fazla bilgi gerekir hakkıdır. Veritabanı sorguları veya onlara işlemleri yapıyor ilgilendirmeyen hesaplamalar yapmak gerek eğer AMA, veritabanından karşılaştırmaları certian alanları, veritabanı bunu yapmak. SQL özel sorguları yapıyor cheape r (kadarıyla süresi ile ilgili olarak ve bunun için optimize edilmiş) olduğu Ama PHP ve MySQL hem de gerçekten olsun hesaplamaları yapıyorsun olmaz yerlerde hem sunucu tarafı vardır. Ama dediğim gibi onlar veritabanı bilgisi ile ilgili işlemler ise, daha karmaşık bir SQL sorgusu yapmak ve kullanmadan önce söyledi.

PHP kullanmak, sonsuz hesaplamalar yapıyor MySQL kadar lag yok. Senin böyle şeyler, SUM, AVG için MySQL kullanmak, ancak aşırıya kaçmayın onun ok sıralama gibi şeyler hakkında konuşurken eğer.

Ben RDBMS'yi kullanarak herhangi bir satır düzey hesaplamalar yapıyor tavsiye ederim.

Eğer iyi performans faydalanmak için gidiyoruz ama zaten sıralanır süzülür ve RBDMS kullanarak veri işleme ettik çünkü o da, başka bir betik dili geçmek için gerekiyorsa, en Python PHP diyelim uygulamalarınızı daha taşınabilir hale getirir değil sadece.

Ayrıca MVC ortamında çalışırken bana kıvrımlara temiz benim denetleyicileri tutmak ve yardımcı oldu, uygulama mantığı ayrı yardımcı olur.