mysqldump ve mydumper performans karşılaştırması.

mydumper multi thread çalışan bir mysql dump uygulaması.

Ben mysqldump ile mydumper performanslarını test ettim. Sonuçlar aşağıda.

Önce 1.5 milyon kayıtlı bir veritabanı üstünde test ettim.

mysql> SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '';  
+-----------------+
| SUM(TABLE_ROWS) |
+-----------------+
|         1522578 |
+-----------------+
[root@localhost backup]# time /usr/bin/mysqldump  --opt --verbose --max_allowed_packet=500M --single_transaction --net_buffer_length=100M -t --skip-add-locks --skip-extended-insert --skip-comments > mysqldump.sql
real    0m9.933s
user    0m6.114s
sys     0m0.598s

[root@localhost backup]# time mydumper -B  -o /root/backup/
real    0m5.406s
user    0m2.555s
sys     0m0.353s

Gördüğünüz gibi mysqldump yaklaşık 2 katı daha fazla sürüyor.

Şimdi kayıt sayısı 25 milyon olan bir veritabanı üstünde test edelim.

mysql> SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '';
+-----------------+
| SUM(TABLE_ROWS) |
+-----------------+
|        28570568 |
+-----------------+
[root@localhost backup]# time /usr/bin/mysqldump  --opt --verbose --max_allowed_packet=500M --single_transaction --net_buffer_length=100M -t --skip-add-locks --skip-extended-insert --skip-comments > mysqldump.sql
real    3m24.774s
user    1m44.076s
sys     0m12.374s

[root@localhost backup]# time mydumper -B  -o /root/backup/
real    1m58.312s
user    0m44.470s
sys     0m5.543s

Evet sonuç yine değişmedi. mydumper mysqldump’tan daha hızlı.

Mydumper : www.mydumper.org

Posted in Linux, MySQL, Web Development on July 31st, 2012 by Kürşad DARA | | 0 Comments

Apache ve PHP’nin versiyon bilgilerini gizleme

Apache ve PHP’nin versiyon bilgilerini headerdan gizleme ihtiyacı duydum. Dursun diye buraya da koyayım bari.

Apache’nin versiyon bilgilerini saklamak için :

/etc/httpd/conf/httpd.conf dosyasında ( ya da sizin conf dosyasınız nerede ise ) aşağıdaki parametreleri ayarlayın.

ServerSignature Off
ServerTokens ProductOnly

Siz aşağıdaki tablodan yararlanıp isterseniz başka değer verebilirsiniz.

ServerToken Görüntülenecek Bilgi
ProductOnly Server: Apache
Major Server: Apache/2
Minor Server: Apache/2.0
Minimal Server: Apache/2.0.55
OS Server: Apache/2.0.55 (Redhat)
Full(veya boş) Server: Apache/2.0.64 (Unix) mod_ssl/2.0.64 OpenSSL/0.9.8e-fips-rhel5
 

Parametreleri ayarlamadan önce :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:45:50 GMT
Server: Apache/2.0.64 (Unix) mod_ssl/2.0.64 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.9
Connection: close
Content-Type: text/html

Parametreleri ayarladıktan sonra :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:47:56 GMT
Server: Apache
X-Powered-By: PHP/5.2.9
Connection: close
Content-Type: text/html

Gördüğünüz gibi Apache bilgileri gizlendi.

Şimdi PHP versiyon bilgilerini gizleyelim.

/etc/php.ini dosyasında ( sizin config dosyanız nerede ise ) aşağıdaki parametreleri ayarlayın.

expose_php Off

Parametreleri ayarladıktan sonra :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:48:47 GMT
Server: Apache
Connection: close
Content-Type: text/html

Gördüğünüz gibi PHP versiyon bilgisi gitti.

Bu parametreleri değiştirdikten sonra apache’yi restart etmeniz gerekmektedir.

Posted in Apache, Linux, PHP on April 16th, 2012 by Kürşad DARA | | 0 Comments

Facebook uygulamanızı kullanan kullanıcıların duvarına otomatik veri yollama

Facebook uygulamalarınızı kullanan kullanıcıların duvarlarına otomatik veri yollamak için aşağıdaki kod bloğunu kullanabilirsiniz.

$attachment = array('message' => 'mesajınız',
                'name' => 'Uygulama adı',
                'caption' => "Uygulama adı",
                'link' => 'Uygulama linki',
                'description' => 'İçerik',
                'picture' => 'resim tam linki'
                );


    $result = $facebook->api('/me/feed/',
                                'post',
                                $attachment);

Not : İlgili javascriptleri ve api kodlarını da sayfanıza include etmiş olmanız gerekmektedir.

Posted in PHP, Web Development on June 14th, 2011 by Kürşad DARA | | 0 Comments

Yazdığınız PHP programlarının güvenliği için bir checklist

İncelenmesi gereken güzel bir checklist.

Güvenli mi yazdığınız programlar ?

Checklist için tıklayınız.

Posted in PHP, Web Development on May 12th, 2011 by Kürşad DARA | | 0 Comments

Facebook sayfalarda kullanıcının beğenip beğenmediğini tespit etme.

Kodunuzun en başında aşağıdaki kodu kullanırsanız kullanıcının sayfayı beğenip beğenmediğini anlayabilirsiniz.


function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
  }
  if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) {
      echo "Sayfayı beğendiğiniz için teşekkürler";
    } else {
      echo "Önce sayfayı beğenmeniz gerekmektedir.";
       echo("< s c r i p t > top.location.href='http://www.facebook.com/pages/blabla/198687143423423'< / s c r i p t >");
    } 
  }

Posted in PHP, Web Development on May 11th, 2011 by Kürşad DARA | | 0 Comments

jQuery $ is not defined hatası

jQuery kullanırken firefox ta firebug ile debug ederken aşağıdaki hatayı alıyorsanız çözüm basit.

$ is not defined
$(document).ready(function(){ 

Gerekli javascript dosyalarını include ederken jQuery dosyasını kendi kullandığınız javascript dosyasından sonra include etmişsinizdir o yüzden bu hatayı alıyorsunuzdur.

Yani;



şeklinde yaparsanız kuvvetle muhtemel bu hatayı alacaksınız. Ama;



şeklinde include ederseniz sorununuz düzelecektir.

Posted in JavaScript, jQuery, Web Development on May 5th, 2011 by Kürşad DARA | | 0 Comments

Bağlantı cihazına göre web sitesine otomatik yönlendirme.

Web sitenizin pc ve mobile versiyonunu yaptıysanız ve otomatik yönlendirme yapmak isterseniz aşağıdaki kodu kullanabilirsiniz.

< ?php

$mobile_browser = '0';

if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i',
    strtolower($_SERVER['HTTP_USER_AGENT']))){
    $mobile_browser++;
    }

if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or 
    ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
    $mobile_browser++;
    }

$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda','xda-');

if(in_array($mobile_ua,$mobile_agents)){
    $mobile_browser++;
    }
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
    $mobile_browser++;
    }
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
    $mobile_browser=0;
    }


if($mobile_browser>0){
   header('Location: http://siteniz/mobile_versiyonu'); 
}
  // else {
  // header('Location: http://siteniz/pc_versiyonu');
  // }
   
?>

Posted in PHP, Web Development on April 26th, 2011 by Kürşad DARA | | 0 Comments

Php Curl ile bir sayfadan resim kaydetmek.

 
< ?php
$url = "http://www.bilgiakademisi.net/images/s/logo.jpg";

$agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) ";
$agent .= "Gecko/20061206 Firefox/1.5.0.9';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
$httpfile  = curl_multi_getcontent ($ch);
file_put_contents("/tmp/tmp.jpg",$httpfile);
?>

Posted in Linux, PHP on January 26th, 2009 by Kürşad DARA | | 0 Comments

java.lang.OutOfMemoryError: Java heap space hatası

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Eğer bu hatayı alıyorsanız bir şekilde javaya ram yetmiyor demektir.

(more…)

Posted in Java on January 6th, 2008 by Kürşad DARA | | 0 Comments