En iyi uygulama fonksiyonları / nesneleri ve veritabanı kullanılarak - genel bir soru

0 Cevap php

Bir veya iki yıl için ve bu soru var, ama o kadar nonspesifik olduğu ve benim anadili İngilizce olmayan, bu yüzden kesin olarak ve herkes benim ikilem ne olduğunu anlayacaksınız sormak nasıl bilmiyorum.

Nesneleri kullanarak ancak basitlik uğruna ben bir işlev ve veritabanı ile basit bir örnek (teorik) yapacağız eğer daha geçerlidir.

Hepimiz Ben sadece onu yapar, ne yapar düşünmek her sayfada gerekmez çünkü fonksiyonları iyi biliyorum. Kullanıcının biz kimliği, adı, yaş, cinsiyet, avatarlink dahil olmak üzere birçok alanda sahip mysql bir üye tablo var diyelim. Bu örnekte tat yeter için ...

Şimdi fWriteUser adında bir işlev yapmak istiyorum. Bu işlev bir site yazma adı birçok yerle ilgili, üye cinsiyet (sex) küçük bir resmini koydu ve yanındaki bir avatar resmi koymak ve adı üzerinde fare ile gittiğinizde kullanıcının yaşını söyleyebilirim olacaktır. Tamam, aptal bir örnek, ama sanırım ok ...

Her sayfada Ben onlara ihtiyacım bazı parametrelerin ile bir kayıt var elbette adları ile anlaşma. Örneğin forumda ben de bu tablonun dışında ve ben konuyu ve forum sonrası mesaj olsun forumu tablolardan kullanıcı adı ve kimliği almak ...

Şimdi işlevini çağırmak için 2 seçeneğiniz var:

  1. Ben herzaman fWriteUser (kullanıcı kimliği) gibi ile işlevini çağırın. Ben oturum değişkeni var userID (I ASP kullanmak ancak soru, belirli ASP değil), ama ben bir çerez ya da başka bir şey olabilir. Ben sadece kullanıcı kimliği yem olarak ben, bu işlevi çağıran dert etmeyin ve işlevi kalanı yok. Sitede her sayfada ben aynı telefon var ve ben fonksiyonu gerekiyordu ne olsun. Ama bu şekilde ben sorgudan seks, avatarlink, kullanıcı adı almak için fonksiyon gerekir. Ben bu veri Çıkış almak için masa elemanı başka select yapmak zorunda. Forumda ben 20 konu varsa ve bu 20 kere olacağını söyledi. Kimlik yüzden bu hızlı işlev sanırım üye bilinmektedir. Ben nesneleri kullanmak isterseniz ben nesne yöntemini çağırır, ancak bu yöntemde de sorgu çalıştırmak gerekir.

Ben her sayfada üye bazı verileri almak sicer Ve ben yine aslında işlevi yapıyor mysql vakit geçirmek. Sadece kimliği ile işlevini çağırmak zorunda, bu yüzden sadece işlevini kendisi değiştirmek gibi ben aslında daha sonra bazı yeni üyesi bilgi işlev içinde değiştirmek ve eklemek edebileceğiniz emtia için.

  1. Ben diğer çekerken ikinci yolu ben fWriteUser (kullanıcı kimliği, kullanıcı adı, cinsiyet, avatarlink) gibi onu aramak için gereken her sayfadaki tüm gerekli verileri işlevini beslemek olduğunu ... Bu şekilde her HTML sayfasında tüm bu verileri alabilir üye veri böylece SELECT sorgusu yalnızca bir kez çalışır. Büyük zararı ben yeni üye değişkeni eklemek isterseniz ben tüm sayfalarını açmak ve SELECT deyiminde başka değişken ve değişim işlev çağrısı başka bir değişken eklemek (veya nesneleri kullanarak eğer yeni bir özellik eklemek) eklemek zorunda olmasıdır.

Büyük bir site yaklaşım 2 certanly uygulamak ve sürdürmek için bir ağrı için ... ben 1. seçeneği kullanmayı tercih ediyorum, ama üye işlev çağrısı sadece bir örnek, çünkü ben başka işlevlere de sahip olabilir, her sayfada daha çok seçme ifadeleri eklersiniz .

Yani benim soru akıllıca 10 seçer yerine birini (kendi seçtiğiniz her fonksiyonu) yapmak olduğunu veya ana sayfadan her değişkeni beslemek ve zor bakımını yapmak için daha iyidir ...

Ben sadece bir kaç variabls götürsem ben tabloda dizinleri ve yaklaşık 100.000 üyesi var, çok işlemci zamanı üyelerinden bir SELECT için neeed nasıl bilmiyorum. Bu select önbelleğe alınmış bir şekilde mi?

Ben üyeleri için 100 oturum değişkenleri gibi yapabilir böylece işlevleri içinde gerektiğinde onları beslemek ama ben olabilir kaç seans emin değilim ve üyeleri değil diğer bazı veriler için için çalışacak ...

Ben belirli bir problem ama iyi bir uygulama problemin daha olmadığını biliyorum, ama bu 10 yerine fonksiyonları "sürekli kendini" ve bir parametreye bağımlı yapmak için beni engelliyor ve ben zorluk sitesi bakımını yaşıyorum. Ben nesneleri (ben OOP şimdi duyuyorum) kullanmaya çalıştı ama ben nesneleri yöntemleri aynı sorun var bakın - Eğer nesne ile farklı şeyler yapmak istiyorsanız her yöntemi seçmek zorunda. Yani, veritabanından bir şey gerekir nesnelerin işlevleri aynı sorun var.

Buraya kadar yapılan herkes için teşekkür ederim ... Ben uzun okumak :-( olduğunu biliyorum Ama aklımda bir yıl ya da iki ...

Seninki

Jerry

UPDATE - Orada tüm cevaplar, ben nokta hala cevapsız ediliyor düşünüyorum. Bana pratik bir örnek ile kendimi daha açık hale getirmek için çalışalım.

Ben bir forum var. Forumda başlık ve kullanıcı verileri ile 50 konuların bir listesi var. Başlıklar tablo konularda ve userdata masa üyelerinden geliyor.

Ben veri getirmek için 2 seçeneğiniz var:

  1. Ben konu vb üyeleri JOIN bir SELECT yapmak .. ve her satırda ben gereken bir başlık ve tüm kullanıcı verilerini alabilirsiniz.

  2. Ben sadece konu veri alabilir ve her döngü için bu noktada üye kimliği dışında üye verileri yapmayız. HTML Ben USERNAME onların cinsiyet, avatar bağlantı vb göstermek zorunda Nerede fonksiyonu fWriteUser (varid) çağırabilir ve yürürlükte fonksiyon her şeyi, üye tablosundan yük yapar ve veri çıkışını yapar.

Select 1 kez çağrı çünkü Açıkçası bu yöntemi 1 kullanmak daha iyidir! Ben bu select sayfası için gereken tüm veri var. Ben fonksiyonu fWriteUser tekrar üye veri almak istemiyorum çünkü Ama ben işlev çağrısı fWriteUser (ID, avatarlink, cinsiyet, vb) gibi kullandığı tüm üye verileri geçmek zorunda.

Ben şimdi bu yaklaşımı kullanıyorum ve elbette hızlı. Ben konu veri getirmek için 1 sorgu gerekir ve daha sonra n-kat önerilen gibi konu yazar 1, ben önbellek yapabileceğini konu yazar 2 vs için kullanıcı verileri almak için işlevi SELECT yapmak gibi ikinci yaklaşım, çok verimli olmaz konu listesinde yazarlar aynı olurdu ama bu sadece yardımcı olacaktır. Ben 50 farklı yazarları da kendi konu her varsa, ben hala konu veri ve kullanıcı kimliği almak ve bu döngü içinde ben üye verileri almak için 50 konular için 50 SELECT ifadeleri yapacak 50 kez işlevini diyebileceğim bir kayıt döngü gerekir correcponding üyeleri.

Ama bu ikinci yaklaşım sayfaları korumak için güzel. Ben sadece fWriteUser (varid) arayın ve ben merak etmeyin. İlk yaklaşımı kullanarak endişeleniyorum. Ben (ekran yaş gibi) bir üyesi baskı çıktısı manipüle etmiş istediğiniz başka parametresini eklerseniz ben var TÜM html sayfalarını açmak ve tüm ben memebrs katılan sayfalarında kullanabileceğiniz sorguları (ve bu yaş eklemeniz gerekir kez vb fotoğraf albümleri ile bir kez yemek tarifleri ile ben konularda üyelerine katılmak gibi bir kez aynı değil tabii ki farklı sorgular,, ..) vardır. Ben yaş eklemek istedim çünkü sadece saat eseridir. Yani bir daha parametre dizileri kullanarak otomatik olarak mümkün olması için çağrı uzanan, ama sorun ben zaten bütün katılmak sorguları değiştirmek zorunda olduğunu.

Ben davamı reast değilse ben, beni sıkan şimdi daha net duyuyorum umarım ;-)

0 Cevap