• 07-01-2022, 11:20:37
    #1
    merhaba,

    SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth


    sorgusu ile koop veritabanından "kapı" değerleri olan verileri listeletiyor, sonra json ile bu değerlerin çıktısını alıyorum.

    fakat "kapı" numarası çok fazla olduğu için toplu aldığım veri büyük bir veri.
    800.000 ya da 1.000.000 a kadar kaydı sorunsuz çıktı alabiliyorum.
    1.000.000'den büyük veriler olduğu için php ile bunu çözemiyorum. hem çıktı süresi çok uzun sürüyor, hem de büyük veriler de timeout'a düşüyor.

    SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth


    komut yapısına göre büyük bir veriyi nasıl alabilirim? (json öncelik)

    teşekkür ederim.
  • 07-01-2022, 11:24:06
    #2
    Üyeliği durduruldu
    echo json_encode($db->query("SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth")); böyle deneyin bi
  • 07-01-2022, 11:31:04
    #3
    KRak3n_TR adlı üyeden alıntı: mesajı görüntüle
    echo json_encode($db->query("SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth")); böyle deneyin bi
    cevabınız için teşekkür ederim, veri çok büyük olduğu için zorlanıyor. ortalama 30dk bekletiyor veri çıktısı için. 500k altında verilerde ise işlemi 5-10dk içinde tamamlıyor.

    ÅŸuan deniyorum fakat yine bekletecek gibi.
  • 07-01-2022, 11:33:41
    #4
    Üyeliği durduruldu
    modeno adlı üyeden alıntı: mesajı görüntüle
    cevabınız için teşekkür ederim, veri çok büyük olduğu için zorlanıyor. ortalama 30dk bekletiyor veri çıktısı için. 500k altında verilerde ise işlemi 5-10dk içinde tamamlıyor.

    ÅŸuan deniyorum fakat yine bekletecek gibi.
    Hocam sayfalama yaptırma imkanınız var mı?
  • 07-01-2022, 11:34:58
    #5
    Sayfalama kullanarak almayı denediniz mi?
  • 07-01-2022, 11:39:13
    #6
    json çıktı alırken kod yapim bu; json.php

    <?php
    $dbh = new PDO("mysql:host=localhost;dbname=hastag", "root", "");
    $stmt = $dbh->query("SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth");
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    //print_r($rows);
    $liste = array();
    foreach ($rows as $row) {
       $list = array();
        $list["id"] = $row["id"];
       $list["name"] = $row["name"];
       $list["surname"] = $row["surname"];
       $list["ip"] = $row["ip"];
       array_push($liste, $list);
    }
    echo json_encode($liste);
     
    ?>
    listeleme kodum bu: listele.php


    <?php
    include("conn.php");
    
    $sorgu=$vt->prepare("SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth");
    
    $sorgu->execute();
    
    $row_count = $sorgu->rowCount();  
    
    echo $row_count.' kapi verisi var.';
    
    $personellist=$sorgu-> fetchAll(PDO::FETCH_OBJ);
     
    ?>
    
    
    
    
    <table class="table table-bordered table-striped table-dark">
                <tr>
                 <td>ID</td>
                 <td>Ad</td>
                 <td>Soyad</td>
                 <td>DOĞUM TARİHİ</td>
                 <td>ip</td>
                
                 </tr>
                
                 <?php
                 foreach($personellist as $person){?>
                                  <tr>
                     <td><?= $person->id ?></td>
                     <td><?= $person->name?></td>
                     <td><?= $person->surname?></td>
                     <td><?= $person->birth?></td>
                     <td><?= $person->ip?></td>
                        
                    
                    </tr>
                
                    
                 <?php } ?>
    </table>
  • 07-01-2022, 11:44:56
    #7
    Evet yine veri büyüklüğü sebebi ile timeout'a düştüm.



    KRak3n_TR adlı üyeden alıntı: mesajı görüntüle
    echo json_encode($db->query("SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth")); böyle deneyin bi
    MuhammetDemirel adlı üyeden alıntı: mesajı görüntüle
    Sayfalama kullanarak almayı denediniz mi?
    Muhammet bey, verileri aldıktan sonra datatables ile sayfalatıyorum. Fakat verileri alamıyorum. Alabildiğim veriler 500k, 800k altı veriler.
    1000k üstünde benzer problemler oluyor.

    stabil olarak zaten bu toplu verileri kullanmayacağım. verileri parçalamam gerek.

    veritabanında "kapi" degerleri olanları aldıktan sonra "numara" degerleri de var.

    kapi: 1000k
    numara 1500k veriye sahip.
  • 07-01-2022, 11:55:10
    #8
    modeno adlı üyeden alıntı: mesajı görüntüle
    Evet yine veri büyüklüğü sebebi ile timeout'a düştüm.







    Muhammet bey, verileri aldıktan sonra datatables ile sayfalatıyorum. Fakat verileri alamıyorum. Alabildiğim veriler 500k, 800k altı veriler.
    1000k üstünde benzer problemler oluyor.

    stabil olarak zaten bu toplu verileri kullanmayacağım. verileri parçalamam gerek.

    veritabanında "kapi" degerleri olanları aldıktan sonra "numara" degerleri de var.

    kapi: 1000k
    numara 1500k veriye sahip.
    O şekilde değil direkt db tarafında sayfalatmaktan bahsediyorum.

    Şöyle bir yapı kurarsanız daha sağlıklı olur. Örneğin limit ile dbden tek seferde 100 tane veriyi çekin bu 100 veri 1.sayfa için olsun 2. Sayfaya tıkladığında 100 ile 200 arasındaki veriyi çekin gösterin 3. Sayfa için 200 ile 300 .... gibi.
  • 07-01-2022, 11:58:35
    #9
    KRak3n_TR adlı üyeden alıntı: mesajı görüntüle
    echo json_encode($db->query("SELECT id, name,surname, birth, ip FROM koop WHERE ip like 'KAPI' ORDER BY birth")); böyle deneyin bi
    MuhammetDemirel adlı üyeden alıntı: mesajı görüntüle
    O şekilde değil direkt db tarafında sayfalatmaktan bahsediyorum.

    Şöyle bir yapı kurarsanız daha sağlıklı olur. Örneğin limit ile dbden tek seferde 100 tane veriyi çekin bu 100 veri 1.sayfa için olsun 2. Sayfaya tıkladığında 100 ile 200 arasındaki veriyi çekin gösterin 3. Sayfa için 200 ile 300 .... gibi.
    söylediğinizi anladım fakat listeleme aşaması için doğru soyluyorsunuz. ben bu yapıyı hiç kullanmayacağım. sayfalama mantığını listeleme için kullanabilirim ama json cıktı kısmında "tek bir .json" verisine ihtiyacım var. hepsi tek bir dosyaya gelmeli.

    eğer ki db tarafı sayfalayarak tek bir ".json" oluyorsa bunun yapılabileceği yolu da açıkçası bilmiyorum.