• 07-01-2022, 12:02:27
    #10
    modeno adlı üyeden alıntı: mesajı görüntüle
    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.


    php.ini dosyanizi duzenlemeyi denediniz mi?
    ini_set('max_execution_time', 4000);
    ini_set('max_execution_time', 0);
  • 07-01-2022, 12:03:56
    #11
    Developer
    php.ini dosyanızdan max_execution_time değerini yükseltin
  • 07-01-2022, 12:06:29
    #12
    MoRTaLCoDeR adlı üyeden alıntı: mesajı görüntüle
    php.ini dosyanizi duzenlemeyi denediniz mi?
    ini_set('max_execution_time', 4000);
    ini_set('max_execution_time', 0);
    merhaba,
    tekrar deniyorum ama soyledigim gibi çok uzun sürüyor beklemesi.
    ayrıca RAM problemi yaşatıyor.
  • 07-01-2022, 12:07:06
    #13
    modeno adlı üyeden alıntı: mesajı görüntüle
    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.
    Tek bir json için mysql ve php tarafında yapılabilecek pek birşey yok aslında ya onda da sayfalama kullanacaksınız ya da sunucu özelliklerini arttırıp timeout değerini geçersiz yapacaksınız. Bu size tek bir json sağlar ama uzun sürer ve kaynakları fazlasıyla kullanır.

    nosql ya da cloud yapılarına geçme imkanınız var mı peki
  • 07-01-2022, 12:14:18
    #14
    MuhammetDemirel adlı üyeden alıntı: mesajı görüntüle
    Tek bir json için mysql ve php tarafında yapılabilecek pek birşey yok aslında ya onda da sayfalama kullanacaksınız ya da sunucu özelliklerini arttırıp timeout değerini geçersiz yapacaksınız. Bu size tek bir json sağlar ama uzun sürer ve kaynakları fazlasıyla kullanır.

    nosql ya da cloud yapılarına geçme imkanınız var mı peki
    verileri localde calistigim için aslinda dış sunucu ile bir alakam yok. daha dogrusu verileri localde aldiktan sonra duruma göre veritabanında esnekleşebilirim. fakat elimde ki projeye ait .sql dosyası çok büyük. bunu parçalamam lazım.
    almam geren 10 sutun var. 6 tanesini sorunsuz aldım. Boyutları da makul

    geriye

    kapi
    numara
    tag
    sahip

    verileri kaldi.

    bu verilerin hepsi koop içersinde "ip" sutununda.
  • 07-01-2022, 12:20:32
    #15
    modeno adlı üyeden alıntı: mesajı görüntüle
    verileri localde calistigim için aslinda dış sunucu ile bir alakam yok. daha dogrusu verileri localde aldiktan sonra duruma göre veritabanında esnekleşebilirim. fakat elimde ki projeye ait .sql dosyası çok büyük. bunu parçalamam lazım.
    almam geren 10 sutun var. 6 tanesini sorunsuz aldım. Boyutları da makul

    geriye

    kapi
    numara
    tag
    sahip

    verileri kaldi.

    bu verilerin hepsi koop içersinde "ip" sutununda.

    sayfalama yaptiginizda tum verileri sorunsuz tamamini json seklinde alabiliyormusunuz?
  • 07-01-2022, 12:53:23
    #16
    MoRTaLCoDeR adlı üyeden alıntı: mesajı görüntüle
    sayfalama yaptiginizda tum verileri sorunsuz tamamini json seklinde alabiliyormusunuz?
    veritabanı tarafından sayfalamadan bahsediyorsanız eğer, nasıl yapıldığı hakkında bir bilgim yok.
    Normal listeleme.php olarak söylüyorsanız evet sorunsuz listeleme olunca, sorunsuz .json da alabiliyorum
  • 07-01-2022, 14:19:21
    #17
    en sağlıklı yönrem veritabanından sayfalama yaparak verileri çekmeniz ve işlemeniz. en çok kaybı orada yaşıyorsunuzdur. bunun dışında sorgu sonucunda tüm verileri tek seferde encode etmek yerine foreach içerisinde sadece her bir satırı jsona çevirip ekrana basmanız az da olsa bir performans kazancı sağlayacaktır diye düşünüyorum. sizin örneğe göre:

    <?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);
    
    echo '{"data":[';
    
    foreach ($rows as $row) {
       $list = array();
        $list["id"] = $row["id"];
       $list["name"] = $row["name"];
       $list["surname"] = $row["<font color="#000000"><font face="Open Sans">surname</font></font>"];
       $list["ip"] = $row["<font color="#000000"><font face="Open Sans">ip</font></font>"];
    
       echo json_encode($list);
    }
    echo ']}';
      
    ?>
  • 07-01-2022, 14:25:08
    #18
    Sayfalama yöntemi işinizi görecektir. Diğer türlü 1M datayı işleme almanız çok mümkün değil. Bunu ne amaçla kullanırsanız kullanın yapmanız gerekiyor diye düşünüyorum.