• 31-10-2009, 17:36:36
    #10
    DLE için minik bir modül var Sitedeki hareket hızını belirleyebiliyorsunuz.

    Kodlarda gerekli yerlere açıklamayı yaptım. Bence iş görür.

    <?php
    $ad_delay = 1; // 1 saniye aralıklarla harekete/işleme/refresh'e izin verir. (Makul olanı: 2)
    // bir işlemden diğer işleme geçiş için izin verilen süre. 
    // Örnek: bunu 50 saniye yaparsanız; kullanıcı bir işlem yapıp diğer işleme geçebilmesi için en az 50 saniye beklemesi gerekecektir.
    $ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp';  // tmp klasörü oluştur ve yazma hakkı ver.  IP log
    
    /* Arama motorlarına herşey serbest */
    $ad_Robots_UserAgent=array( 
       'aipbot',
       'Aport',
       'eStyleSearch',
       'Gigabot',
       'Gokubot',
       'Google',
       'MJ12bot',
       'msnbot',
       'PlantyNet_WebRobot',
       'StackRambler',
       'TurtleScanner',
       'Yahoo',
       'Yandex',
       'YaDirectBot',
    );
    
    /* F5 yapmayacağına inandığınız IP'ler :=) */
    $ad_good_ip = array(
        '127.0.0.1',
    );
    
    
    function ad_WiteIP($dir){
       $f=fopen($dir.'/a'.$_SERVER['REMOTE_ADDR'], 'w');
       fclose($f);
    }
    
    $ad_IsRobot=false;
    foreach ($ad_Robots_UserAgent as $match){
       if (strstr($_SERVER['HTTP_USER_AGENT'], $match)){
          $ad_IsRobot=true;
          break;
       }
    }
    if( in_array($_SERVER['REMOTE_ADDR'], $ad_good_ip) ) {
         $good_ip = true;
    } else {
         $good_ip = false;
    }
    
    if (!$ad_IsRobot AND !$good_ip){
       session_start();
    }
    
    if (!$ad_IsRobot AND !$good_ip){
       $ad_dir      =opendir($ad_DirName)
          or die('Dizinde Geçici Dosyalar Bulunamadı.');
       $ad_now      =time();
       $ad_forbid   =$ad_now-$ad_delay;
    
       while (false!==($ad_FName=readdir($ad_dir))){
          if (ereg('^a[1-9]',$ad_FName)
             && (@ filemtime($ad_DirName.'/'.$ad_FName)<$ad_forbid)){
             @ unlink($ad_DirName.'/'.$ad_FName);
          }
       }
       closedir($ad_dir);
    
       if (file_exists($ad_DirName.'/a'.$_SERVER['REMOTE_ADDR'])){
          header('HTTP/1.0 503 Service Unavailable');
          header('Status: 503 Service Unavailable');
          header('Retry-After: '.$ad_delay*3);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>503</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
    <meta http-equiv="Refresh" content="15">
    </head>
    <body>
    <h1>Yavaş Gel - 503 </h1>
    <p>Dostum çok hızlı hareket ediyorsun :) <br><br> Uslu olursan, 15 saniye sonra herşey normale dönecek.</p>
    </body>
    </html>
    <?php
          ad_WiteIP($ad_DirName);  
          exit;
       }else{
          ad_WiteIP($ad_DirName);
       }
    }
    ?>
  • 31-10-2009, 20:31:50
    #11
    Üyeliği durduruldu
    GeCe_ adlı üyeden alıntı: mesajı görüntüle
    Çok yoğun çalışan bir siteniz, 3-5 satırlık veritabanı sorgularınız varsa sorgularınızı prosedürler ile yaptırın. İndexlerinizi iyi yapın. Kod yazarken daha çok zamanınızı alır ama mysql daha rahat çalışır.

    http://www.google.com.tr/#hl=tr&sour...79529c4b7f49c5
    Teşekkürler.Verdiğin linki incelemeye başladım.

    Stormy adlı üyeden alıntı: mesajı görüntüle
    DLE için minik bir modül var Sitedeki hareket hızını belirleyebiliyorsunuz.

    Kodlarda gerekli yerlere açıklamayı yaptım. Bence iş görür.

    <?php
    $ad_delay = 1; // 1 saniye aralıklarla harekete/işleme/refresh'e izin verir. (Makul olanı: 2)
    // bir işlemden diğer işleme geçiş için izin verilen süre. 
    // Örnek: bunu 50 saniye yaparsanız; kullanıcı bir işlem yapıp diğer işleme geçebilmesi için en az 50 saniye beklemesi gerekecektir.
    $ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp';  // tmp klasörü oluştur ve yazma hakkı ver.  IP log
    
    /* Arama motorlarına herşey serbest */
    $ad_Robots_UserAgent=array( 
       'aipbot',
       'Aport',
       'eStyleSearch',
       'Gigabot',
       'Gokubot',
       'Google',
       'MJ12bot',
       'msnbot',
       'PlantyNet_WebRobot',
       'StackRambler',
       'TurtleScanner',
       'Yahoo',
       'Yandex',
       'YaDirectBot',
    );
    
    /* F5 yapmayacağına inandığınız IP'ler :=) */
    $ad_good_ip = array(
        '127.0.0.1',
    );
    
    
    function ad_WiteIP($dir){
       $f=fopen($dir.'/a'.$_SERVER['REMOTE_ADDR'], 'w');
       fclose($f);
    }
    
    $ad_IsRobot=false;
    foreach ($ad_Robots_UserAgent as $match){
       if (strstr($_SERVER['HTTP_USER_AGENT'], $match)){
          $ad_IsRobot=true;
          break;
       }
    }
    if( in_array($_SERVER['REMOTE_ADDR'], $ad_good_ip) ) {
         $good_ip = true;
    } else {
         $good_ip = false;
    }
    
    if (!$ad_IsRobot AND !$good_ip){
       session_start();
    }
    
    if (!$ad_IsRobot AND !$good_ip){
       $ad_dir      =opendir($ad_DirName)
          or die('Dizinde Geçici Dosyalar Bulunamadı.');
       $ad_now      =time();
       $ad_forbid   =$ad_now-$ad_delay;
    
       while (false!==($ad_FName=readdir($ad_dir))){
          if (ereg('^a[1-9]',$ad_FName)
             && (@ filemtime($ad_DirName.'/'.$ad_FName)<$ad_forbid)){
             @ unlink($ad_DirName.'/'.$ad_FName);
          }
       }
       closedir($ad_dir);
    
       if (file_exists($ad_DirName.'/a'.$_SERVER['REMOTE_ADDR'])){
          header('HTTP/1.0 503 Service Unavailable');
          header('Status: 503 Service Unavailable');
          header('Retry-After: '.$ad_delay*3);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>503</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
    <meta http-equiv="Refresh" content="15">
    </head>
    <body>
    <h1>Yavaş Gel - 503 </h1>
    <p>Dostum çok hızlı hareket ediyorsun :) <br><br> Uslu olursan, 15 saniye sonra herşey normale dönecek.</p>
    </body>
    </html>
    <?php
          ad_WiteIP($ad_DirName);  
          exit;
       }else{
          ad_WiteIP($ad_DirName);
       }
    }
    ?>
    Teşekkürler.Emeğine sağlık.

    Konuda yardımı geçen her kese çokça teşekkür ederim.