• 20-06-2025, 19:00:49
    #1
    Merhabalar.

    a diye sitem var a siteme b sitemden api olarak veri çekip kullanıcıya gösteriyorum yapı bu şekilde anlık 60-100 bin istek alsa sorun olur mu?

    yani kullanıcı siteye girince api.php dosyam yükleniyor jsondaki içerikler yükleniyor kullanıcıya gösteriliyor.

    veya fastly cdn kullansam bu işi çözer mi?

    <?php
    header('Content-Type: application/json');
    
    $jsonFile = __DIR__ . '/match.json';
    
    if (!file_exists($jsonFile)) {
        echo "Veri dosyası bulunamadı.";
        exit;
    }
    
    $jsonData = file_get_contents($jsonFile);
    $matches = json_decode($jsonData, true);
    
    if (!$matches) {
        echo "Veri okunamadı.";
        exit;
    }
    
    // HTML çıktısı
    
    
    foreach ($matches as $cekplayer) {
        echo '<div id="matchList">';
        ?>
        
        <a class="single-match show" href="matches?id=<?php echo htmlspecialchars($cekplayer['yaziid']); ?>" data-matchtype="<?php echo htmlspecialchars($cekplayer['tur']); ?>" target="macth-video">
            <img src="<?php echo htmlspecialchars($cekplayer['home_img']); ?>" style="border-radius:0px !important;" width="20" height="20" loading="lazy" alt="Home">
            <div class="match-detail">
                <div class="date"><?php echo htmlspecialchars($cekplayer['tur']); ?></div>
                <div class="event"><?php echo htmlspecialchars($cekplayer['player_saat']); ?> | <?php echo htmlspecialchars($cekplayer['leauge']); ?></div>
                <div class="teams">
                    <div class="home"><?php echo htmlspecialchars($cekplayer['home']); ?></div>
                    <div class="away"><?php echo htmlspecialchars($cekplayer['away']); ?></div>
                </div>
            </div>
            <img src="<?php echo htmlspecialchars($cekplayer['away_img']); ?>" style="border-radius:0px !important;" width="20" height="20" loading="lazy" alt="Away">
        </a>
        <?php
    }
    echo '</div>';
    ?>
  • 20-06-2025, 19:01:35
    #2
    @brown; @berkantipek; @Elazığlı168;
  • 20-06-2025, 19:12:23
    #3
    sunucuoptimizasyon.com
    Çöküp çökmeyeceği bir çok şeye bağlıdır.

    Öncelikle veri çekme ve gösterme süreçlerinin üreteceği sorgu sayısı, sorguların büyüklüğü ve her bir sorgunun sistemi ne kadar meşgul edeceği, ne kadar yük yapacağı önemlidir. Yazılımcı değilim fakat kodları yüzeysel olarak incelediğimde .json bir dosyadan veri alınıp html olarak sonuç döndürüyorsunuz anladığım kadarıyla yani ilk bakışta hafif bir sorgu gibi görünüyor fakat anlık olarak ne kadar bir verinin okunacağı ve ne kadarının gösterileceği önemli. Sorguyu sadece dosya bazlı yapıyorsanız yük daima az olur ama işin içine veritabanı sorgusu girerse yük artacaktır.

    Bu yazılım tarafı içindi, sunucu tarafı için ise webserver tarafının yapılandırması önemli, sorgu ufak bile olsa aynı anda 60-100 bin isteğin servis edilmesi webserver tarafı için iyi bir optimizasyon ve limit ayarı gerektirebilir. Sistemde veritabanı var ise yine veritabanı sunucusu tarafında da iyi bir optimizasyon gerekebilir.

    Sistemi tam olarak devreye almadan önce canlıdaymış gibi stres testleri yapmak sağlıklı olacaktır. Ama sistem sadece bu kodlar üzerinde çalışan dosya tabanlı bir sistem ise veritabanı yok ise, sunucu yapılandırması da iyi olursa 50-60k anlık request'in çok büyük sıkıntı yaratacağını sanmıyorum.

    Elbette sistemi tek bir sunucu üzerine kurmaktansa cdn altyapısında dağıtık şekilde çalıştırmak daha faydalı olabilir ama unutulmaması gereken nokta cdn yapılarda sorgular cache edildiğinde sizin anlık değişen sorgularınızda ziyaretçilere önceki sorguların gösterilme durumu olabilir bu da ciddi karışıklık yaratabilir buna dikkat edilmelidir.
  • 20-06-2025, 19:15:43
    #4
    60-100 bin istek kısa sürede gerçekleşirse önce io disk boğulması, swap taşmaları, cpu sorunları ortaya çıkar ve sistem çöker. Bunun en mantıklı çözümü stream mantığına yakın bir yapı kullanmak. Node.js, redis gibi çözümler düşünmek gerekir.

    $jsonData = file_get_contents($jsonFile);
    bu kodun aynı anda binlerce istek alması ciddi sorun olur.
  • 20-06-2025, 19:17:23
    #5
    Tahminimce taraftarium / justin tarzı bir sistem kuruyorsunuz. O sektörde anlık çok trafik yığılıyor maalesef ki Sunucu sağlam olmazsa api her türlü çöker. Çok büyük sunucu almak da gereksiz olur çünkü sadece belirli saatlerde çok trafik olacak.



    Eğer bu sistemi ben kuruyor olsaydım:
    - match.json dosyasını Bunny.net Storage’a yüklerdim. Storage’ı de CDN ile bağlardım.
    - Bir Bunny Edge Script oluştururdum. Kullanıcıdan gelen isteklerde URL parametresine göre filtreleme yapar (örneğin ?tur=final gibi). Storage’daki match.json dosyasını okur. İstenilen verileri seçip sadece o verileri JSON olarak döndürür. Sitede bu JSON çıktısını kullanarak HTML olarak gösterirdim. Yani kullanıcı siteye girdiğinde, Edge Script’ten dönen JSON verisi frontend tarafında HTML'ye dönüştürülür ve gösterilir.

    Bu sayede api de json da sunucuya yük bindirmez. Size de normal ortalama sunucu gerekir.
  • 20-06-2025, 19:28:02
    #6
    Json statikse php falan hiç karıştırmadan javascriptle işi halledin. Cloudflare pages'e yükleyin keyfinize bakın.
  • 20-06-2025, 19:28:52
    #7
    F.Gungor adlı üyeden alıntı: mesajı görüntüle
    Json statikse php falan hiç karıştırmadan javascriptle işi halledin. Cloudflare pages'e yükleyin keyfinize bakın.
    json içeriği 2 dakikada bir değişiyor hocam
  • 20-06-2025, 19:41:41
    #8
    moosy adlı üyeden alıntı: mesajı görüntüle
    json içeriği 2 dakikada bir değişiyor hocam
    Önbellek, cdn işleri de sizi kurtarmaz o zaman. 2 dakikada bir Önbellek yenilemek gerekir. Yine de php yerine javascript kullanmak %90 rahatlatır sizi. Veri okuma, parçalama işlerini kullanıcının tarayıcısı yapar size sadece json dosyasını servis etmek kalır.
  • 20-06-2025, 20:35:03
    #9
    F.Gungor adlı üyeden alıntı: mesajı görüntüle
    Önbellek, cdn işleri de sizi kurtarmaz o zaman. 2 dakikada bir Önbellek yenilemek gerekir. Yine de php yerine javascript kullanmak %90 rahatlatır sizi. Veri okuma, parçalama işlerini kullanıcının tarayıcısı yapar size sadece json dosyasını servis etmek kalır.
    bunun en doğru yolu ne olur hocam sizce?
    cloudflare workers var aslinda edgeden dönüyor buda çözebilir diye düşündüm

    sizce yol haritam nasıl olmali bu karmaşık işin içinden çıkamadım