+ Cevap Yaz
5 sonuçtan 1 ile 5 arası gösteriliyor

Konu: SQL i yormadan PHP ile nasıl veri çekilir? yardım

  1. #1

    Üyelik Tarihi
    07/2009
    Mesaj
    49
    Ceviz Üyesi

    Varsayılan SQL i yormadan PHP ile nasıl veri çekilir? yardım

    Meraba arkadaşlar. Benim online oyun sistemim var ve oyun için veri tabanı olarak mssql kullanıyorum. Ancak dbde bir tablo içinde 500 bin ' e yakın veri var ve web panelim ile oyun dosyalarım farklı sunucularda. Birilerinden 30 dkda 1 veri çekmek gibi bi sistem duydum. Doğrumudur böyle bişey varmıdır varsa nasıl yapılır. Yada bana avantaj fikir verebilirmisiniz. Sitede 100 kişi online oluyor en az ve herbiri dbye yüklenince ciddi sorunlar yaşıyorum. Lütfen yardım

  2. #2

    Üyelik Tarihi
    06/2007
    Yer
    Almanya/Konya
    Mesaj
    162
    Ceviz Üyesi

    Varsayılan

    kodlama yapiniz nasildir bilemiyorum ama her sorgudan sonra ilgili sorgulari kapayarak ve cacheleyerek sorgulardan kaynaklanan yükü hafifletmis olursunuz bununla birlikte yine kodlama yapinizda cok buyuk onem tasimaktadir ayrica sorgularinizda misal insert,delete,update gibi islemlerde mysql_unbuffered_query(); kullanmak dahada performansli bununla birlikte mysqli ile sorgulama islemlerini de gerceklestirebilirsiniz

    mysql ile yapilan sorgulama
    PHP Kodu:
    <?php
        $tq 
    1000000;
        
    $mt microtime(true);
        
    $conn mysql_connect("127.0.0.1","user","");
        
    mysql_select_db("test"$conn);
        for(
    $i=0$i<$tq$i++){
            
    $data mysql_query("SELECT * FROM tabela LIMIT 1"$conn);
            
    $data_object mysql_fetch_assoc($data);
            
    // mysql_free_result($data);
        
    }
        
    mysql_close($conn);
        
    $et microtime(true) - $mt;
        print 
    "Elapsed time: " number_format($et) . "s\n";
        print 
    "QPS: " . ($tq $et) . "\n";
    ?>
    mysqli ile yapilan sorgulama

    PHP Kodu:
    <?php
        $tq 
    1000000;
        
    $mt microtime(true);
        
    $conn mysqli_connect("127.0.0.1","user","","test");
        for(
    $i=0$i<$tq$i++){
            
    $data $conn->query("SELECT * FROM tabela LIMIT 1");
            
    $data_obj $data->fetch_assoc();
        }
        
    $conn->close();
        
    $et microtime(true) - $mt;
        print 
    "Elapsed time: " number_format($et) . "s\n";
        print 
    "QPS: " . ($tq $et) . "\n";
    ?>
    mysql_* 7,227.7 7,222.2 7,220.7 7,223.5
    mysqli_* 6,963.0 6,974.0 6,974.4 6,970.5

    aradaki farki acikca gorebiliyoruz mysqli 4% kadar daha performansli bir sonuc vermistir

    ayrica sql sorgularinizda ihitiyaciniz olan alanlarin isimlerini tanimlayarak cekmek cok daha mantiklidir
    Kod:
    $sql = "SELECT * FROM tabela";
    
    degilde
    Kod:
    $sql = "SELECT tabela.adi, tabela.title FROM tabela";
    
    seklinde daha dogrudur ayni sekilde tirnak kullanimlarinida test ederek bakabiliriz..
    PHP Kodu:
    <?php

    define 
    ('MAX',2000000);
    function 
    f1()
    {
        for(
    $i=0;$i<MAX$i++)
        {
            
    $c "test " $i;
        }
    }

    function 
    f2()
    {
        for(
    $i=0;$i<MAX$i++)
        {
            
    $c "test $i";
        }
    }

    function 
    f3()
    {
        for(
    $i=0;$i<MAX$i++)
        {
            
    $c 'test ' $i;
        }
    }

    $t1 microtime(true);
    f1();
    echo 
    'Time 1: ' , (microtime(true) - $t1) , "<br>\n";

    $t2 microtime(true);
    f2();
    echo 
    'Time 2: ' , (microtime(true) - $t2) , "<br>\n";

    $t3 microtime(true);
    f3();
    echo 
    'Time 3: ' , (microtime(true) - $t3) , "<br>\n";

    ?>

    Time 1: 2.71823883057
    Time 2: 3.30931997299
    Time 3: 3.14731502533
    yani yazilimin performanss herseye bagli olabilir bunlari dikkate alarak bazi degisiklikler ile birazda olsa performansi artirabilirsiniz sonuc olarak performans alabilmek icin kodlamamizi bastan duzenli bir sekilde kodlanip hazirlanmasi gerekir ayrica sunucu tarafli tum optimizasyonlarin yapilmasi yine ek performanslar getirebilir cluster yontemi sunucu tarafli cacheleme yontemi gibi

  3. #3
    metin06ank Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    09/2009
    Mesaj
    132
    Ceviz Üyesi

    Varsayılan

    engin ben meto ®

    bende yeni panel üzerindeyim ( panel olayı tamamen değişecek )

    ezsql kullan cache özelliği mevcut

  4. #4

    Üyelik Tarihi
    07/2009
    Mesaj
    49
    Ceviz Üyesi

    Varsayılan

    acemihp kardeşm. Öncelikle verdiğin bilgilerden dolayı teşekkür ederim. Verdiğin bilgiler gerçekten işe yarayan bilgiler. Fakat cache olayı üzerinde bilgin varsa biraz daha açabilirmisin =)


    metin kardeşm k.bkma 3nqiN'in hesabından girdim ben senerior =) sonra 3nqiN cvp atmadı diye aranız bozlmasın. =)

  5. #5
    sdemirkeser Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    08/2008
    Mesaj
    2,132
    Ceviz Üstadı

    Varsayılan

    optimizasyon basli basina bir uzamanlik alani zaten. tum uygulamanizin kodlarini incelemeden yorum yapmak zor.

    mesela join table sistemi yorar, count yerine verileri mysql_num_rows ile getiriyorsaniz faciadir, sorgularda kullandiginiz alanlarin tablolarda index olmasi gerekir

+ Cevap Yaz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz