• 03-03-2025, 01:01:23
    #1
    Merhaba dostlar 2 adet dosya var config.php ve calistir.php

    calistir.php dosyasını urlde her çalıştırdığımda sürekli config.php bağlantısı yapsın istemiyorum. Yeni ilk calistirmada tek seferlik config yapsın sonraki calistirmalarda yapmasın gereksiz yere her seferinde bağlantıistemiyorum nasıl yapabiliriz ?

    config.php :
    <?php
    $servername = "localhost";
    $username = "";
    $password = "";
    $dbname = "";
    ?>

    calistir.php :
    <?php
    include 'config.php';
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
    die("Bağlantı hatası: " . $conn->connect_error);
    }
    ?>
  • 03-03-2025, 01:02:48
    #2
    Veritabanı bağlantısını Sessions alarak yapabilirsiniz rahatlıkla.
  • 03-03-2025, 01:03:04
    #3
    session kullanabilirsiniz.

    $servername = $_SESSION['servername'];
    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    $dbname = $_SESSION['dbname'];
  • 03-03-2025, 01:03:39
    #4
    cmlndz adlı üyeden alıntı: mesajı görüntüle
    session kullanabilirsiniz.

    $servername = $_SESSION['servername'];
    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    $dbname = $_SESSION['dbname'];
    Bu sadece değişkenleri önbelleğe alır böyle değil.
  • 03-03-2025, 01:05:45
    #5
    Session ile yapınca tüm bu urlyi sorgulayan kullanıcılar için tek bir session geçerli mi olacak
  • 03-03-2025, 01:09:17
    #6
    Game & Software Architect
    connection pooling
  • 03-03-2025, 01:12:11
    #7
    Veri tabanı bağlantısını her istekte çalıştırmalı ve algoritmik olarak her sorgu sonunda bağlantıyı kapatmalısınız. Çünkü siteye giren her bir tekil kullanıcı farklı isteklerde bulunacaktır, bu sebeple veri tabanına bağlanmalı. Veya kendinize ait cache sistemi yazmalısınız tabii bunu da kullanıcı girişlerinde vs. kullanamazsınız ve sitede dinamik içerikler varsa algoritma olarak baş etmeniz gereken tonlarca sorun çıkacaktır. Ayrıca düz mysqli yazmayı kimse için önermiyorum, çok daha iyi ve esnek orm modülleri varken, Doctrine/DBAL gibi.

    Kısaca dediğiniz şey 3-4 satır kodla halledebilecek bir olay değil, olsaydı zaten max_connections hataları olmazdı büyük sitelerde. Bunu minimuma indirmek için dediğim mantıkları araştırmanız ve algoritma çalışması yapmanız şart.
  • 03-03-2025, 01:12:24
    #8
    R10'DA İLK | 81 İL SCRİPT
    <?php
    session_start(); // Oturumu başlat
    
    if (!isset($_SESSION['db_baglandi'])) {
        include 'config.php';
        $conn = new mysqli($servername, $username, $password, $dbname);
    
        if ($conn->connect_error) {
            die("Bağlantı hatası: " . $conn->connect_error);
        }
    
        $_SESSION['db_baglandi'] = true; // Bağlantının kurulduğunu işaretle
    } else {
        echo "Veritabanı bağlantısı zaten kurulu, tekrar bağlanmadı.";
    }
    ?>
  • 03-03-2025, 01:12:42
    #9
    Performans kaygısı ile düşünüyorsanız, bunu yapmak gerçekten önemsizdir. Teknik açıdan config içinde ki değişkenleri calistir içine almak ile include etmek arasında hesaba katılmayacak seviyede fark vardır. Sorunuza gelecek olursak; calistir üzerinde bir kontrol ile include yapılabilr. Örnek veritabanı bağlantısı gereken bir kısım oldugu koşulda include yap diyebilirsiniz.