Faydali MySQL Sorgulari

Belli bir tarihin gününü türkçe olarak almak:

Dün:
SELECT ELT( WEEKDAY(DATE_SUB(CURDATE(),INTERVAL 1 DAY))+1, 'Pazar','Pazartesi','Sali','Çarşamba','Perşembe','Cuma','Cumartesi') AS gun;

Bugün :
SELECT ELT( WEEKDAY(CURDATE())+1, 'Pazartesi','Sali','Çarşamba','Perşembe','Cuma','Cumartesi','Pazar') AS gun;

Yarin :
SELECT ELT( WEEKDAY(DATE_ADD(CURDATE(),INTERVAL 1 DAY))+1, 'Pazar','Pazartesi','Sali','Çarşamba','Perşembe','Cuma','Cumartesi') AS gun;

Yorum (yok) Yorum yaz!

E-Ticaret Denemeleri icin TEST Kredi karti numaralari

American Express378282246310005
American Express371449635398431
American Express Corporate378734493671000
Australian BankCard5610591081018250
Diners Club30569309025904
Diners Club38520000023237
Discover6011111111111117
Discover6011000990139424
JCB3530111333300000
JCB3566002020360505
MasterCard5555555555554444
MasterCard5105105105105100
Visa4111111111111111
Visa4012888888881881
Visa4222222222222
Processor-specific Cards
Dankort (PBS)76009244561
Dankort (PBS)5019717010103742
Switch/Solo (Paymentech)6331101999990016

Yorum (yok) Yorum yaz!

Webmasterlar icin Gerekli Bazi Siteler

Uptime Monitor Siteleri
http://blog.webdistortion.com/2008/05/31/five-of-the-best-free-uptime-monitoring-tools/

Ucretsiz Sayac ve İstatistik  Siteleri
http://www.socialseo.com/big-ol-list-of-the-best-website-analytics-and-web-stat-tools.html

15 Seo Araci
http://www.socialseo.com/the-top-15-free-seo-tools.html

Webmasterlar tarafindan yorumlanan 13 Ucretsiz CMS yazilimi
http://blog.webdistortion.com/2008/05/17/13-free-cms-options-for-web-design-professionals/

9 adet RTE ( veya WYSIQYG ) online html editoru
http://blog.webdistortion.com/2008/03/09/9-of-the-best-rich-text-editors-reviewed/

Yorum (yok) Yorum yaz!

Mysql Limit in MSSQL e uyarlanmasi

MySQL deki LIMIT komutunun MSSQL de direk karsiligi malesef yok .
PHP kullananlar icin webde cok guzel bir fonksiyon buldum.. MSSQL icin SQL sorgusunu yine LIMIT kullanarak yapiyorsunuz ve bu fonksiyon sizin icin sorguyu MSSQL uyumlu hale getiriyor...

ornek

  $sql=mssql_limit_query("SELECT * FROM URUNLIST WHERE BARKOD ORDER BY URUNADI ASC LIMIT 2,8");

    $res=mssql_query($sql,$conn);

seklinde uygulayabilirsiniz...

Ve fonksiyonumuz...

// #######################################################################################################
function invertOrder($order){
    if (strtolower($order) == 'asc'){
        return 'DESC';
    }
    else {
        return 'ASC';
    }
}

// #######################################################################################################
function mssql_limit_query($sql){ // mubarek bi fonksiton limitten TOP a cevirir
    if (strpos(strtolower($sql), ' limit ') === false){
        return $sql;
    }

    //Extract out the limit and order by clauses.
    if (preg_match('/LIMITs*(([0-9]+),)?s*([0-9]+)/', $sql, $matches)){
        $skip = $matches[2];
        $n = $matches[3];

        $start = strpos(strtolower($sql), ' order by ');
        if ($start !== false){

            $orderby = array();
            $thisorder = array();

            $order = trim(substr($sql, $start+strlen(' order by ')));
            $pos = strpos($order, ' ');

            while ($pos !== false){
                $word = substr($order, 0, $pos);
                if ($word{strlen($word)-1} == ','){
                    if (strtolower($word) == 'asc' || strtolower($word) == 'desc'){
                        $thisorder[1] = $word;
                        $orderby[] = $thisorder;
                        $thisorder = array();
                    }
                    else {
                        $word = substr($word, 0, -1);
                        $thisorder[0] = $word;
                        $thisorder[1] = 'ASC';
                        $orderby[] = $thisorder;
                        $thisorder = array();
                    }
                }
                else if (strtolower($word) == 'asc' || strtolower($word) == 'desc'){
                    $thisorder[1] = $word;
                    $orderby[] = $thisorder;
                    $thisorder = array();
                }
                else if (strtolower($word) == 'having' || strtolower($word) == 'limit'){
                    if (!empty($thisorder[0])){
                        if (empty($thisorder[1])){
                            $thisorder[1] = 'asc';
                        }
                        $orderby[] = $thisorder;
                    }
                    break;
                }
                else {
                    $thisorder[0] = $word;
                }
                $order = trim(substr($order, $pos));
                $pos = strpos($order, ' ');
            }
        }

        $base_sql = preg_replace('/LIMITs*(([0-9]+),)?s*([0-9]+)/', '', $sql);

        if (empty($skip)){
            $sql = preg_replace('/^s*SELECTs/', 'SELECT TOP '.$n.' ', $base_sql);
            return $sql;
        }
        else {
            $outer_order = '';
            $inner_order = '';
            foreach ($orderby as $val){
                $outer_order .= $val[0].' '.$val[1].', ';
                $inner_order .= $val[0].' '.invertOrder($val[1]).', ';
            }

            if (empty($outer_order)){
                $outer_order = 1;
            }
            else {
                $outer_order = substr($outer_order, 0, -2);
            }

            if (empty($inner_order)){
                $inner_order = 1;
            }
            else {
                $inner_order = substr($inner_order, 0, -2);
            }

            // edited by hidayet (20080803)
            $h_pos=strpos(strtolower($base_sql)," from ");
            $h_pox=strpos(strtolower($base_sql)," order by ");
            $h_sql="SELECT COUNT(*) as CNT ".substr($base_sql,$h_pos,(strlen($base_sql)-$h_pos)-( strlen($base_sql) - $h_pox));
            $h_res=mssql_query($h_sql);
            $h_cnt=mssql_fetch_assoc($h_res);

            $nskip=$n+$skip;

            if ($h_cnt["CNT"] + $n > $nskip)
            {
                $n = $h_cnt["CNT"] % $n;
            } // if sonu

            // end of edit (20080803)            

            $sql  = "SELECT * FROM (n";
            $sql .= "   SELECT TOP ".$n." * FROM (n";
            $sql .= "       ".preg_replace('/^s*SELECTs/', 'SELECT TOP '.($nskip).' ', $base_sql)."n";
            $sql .= "   ) As table_inner ORDER BY ".$inner_order." n";
            $sql .= ") As table_outer ORDER BY ".$outer_order."n";
            return $sql;
        }
    }
    return false;
}


Yorum (2) Yorum yaz!

PHP performans taktikleri

PHP Programlama ile ilgili her programcinin dikkat etmesi gereken performans kurallari :

( John Lim internet sitelerinden derlenmis ve cevrilmistir )

1. Bir metod statik ise onu statik olarak tanimlayiniz. Bu 4 kat daha performans saglar.

2. echo, print ten daha hizlidir. bkz ( http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 )

3. echo nun parametrelerini kullanin ( string siralama gibi ).

4. For donguleriniz icin duracagi noktayi donguden once belirleyiniz. Dongunun icinden kontrol yaptirmak daha maliyetlidir.

5. Bosa cikan degiskenleri unset() ile hafizadan cikariniz. Ozellikle buyuk boyutlu degiskenler ve diziler hafizada ne kadar yer kaplarsa genel islemler o kadar yavaslar. Yazilimin kullanici sayisi arttikca sunucuda hafiza sorunlari olusabilir.

6. Nesne tabanli kod yazarken __get, __set, __autoload gibi fonksiyonlardan uzak durmaya calisin.

7. require_once() ve include_once() fonksiyonlari require() veya include() den cok daha maliyetlidir.

8. include yaparken tam dosya yolu verin. Eger vermezseniz genel pathlerin tamami taranacaktir dosyanin bulundugu yere kadar olan butun alt dizinler tek tek kontrol edilecektir.

9. Scriptinizin basinda zaman verisine ihtiyac duyuyorsaniz time()
 yerine $_SERVER[’REQUEST_TIME’] kullanabilirsiniz.

10. regex yerine strncasecmp, strpbrk ve stripos kullanabilirsiniz.

11. str_replace, preg_replace den daha hizlidir  ama strtr,  str_replace den 4 kat daha hizlidir.

12. Eger bir fonksiyonunuz hem normal hem dizi degiskenleri parametre olarak aliyorsa
ve parametre listeniz cok uzun degilse, normal degiskenler icin ayri, dizi degiskenler icin ayri fonksiyon yazabilirsiniz

13.  Cok sonuclu durumlar icin if-elseif-else yerine switch-case kullanmak daha hizlidir

14. @ karakteri ile hata korleme scriptinizi yavaslatir.

15. Apache’nin mod_deflate modulunu aktiflestirin

16. Veritabani ile isiniz bittiginde baglantiyi kesin. ( mysql_close() )

17. $row[’id’] seklindeki kullanim $row[id] den 7 kat daha hizlidir

18. Hata mesajlari scriptinizi yavaslatir.

19. for dongusunun parametre bolumunde fonksiyon kullanmayin. Ornek :

 for ($x=0; $x < count($array); $x)

Buradaki count() fonksiyonu her adimda tekrar calistirilir

20. Artirma yaparken fonksiyonlar icindeki lokal degiskenleri artirmak en hizlisidir. Ayni sekilde fonksiyonlarin icinde lokal degiskenleri kullanmak genel degiskenleri kullanmaktan daha hizlidir.

21. Global bir degiskeni artirmak (++) lokal bir degiskeni artirmaktan 2 kat yavastir.

22. Bir nesnenin degerini artirmak (ornek: $this->deger++) lokal degiskeni artirmaktan 3 kat daha yavastir.

23. Tanimlanmamis bir degiskeni artirmak, onceden tanimlanmis degiskeni artirmaktan 9-10 kat daha yavastir.

24. Bir global degisken tanimlayip onu kullanmazsaniz bu scriptinizi yavaslatir. PHP her artirmada o degiskenin global olup olmadigina bakar.

25. Metot cagirmak bir sinifta tanimlanmis metotlardan bagimsizdir. Test metodundan once, 10 tane daha metod ekleyip test etmemize ragmen performans degismedi.
26. Turetilmis siniflarin icindeki fonksiyonlar asil sinifin fonksiyonlarindan daha hizlidir.

27. 1 parametreli ve icerigi bos olan bir fonksiyon lokal bir degiskenin 7-8 kere artirilmasina esit guc tuketir.A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations.

28. Degiskenlerde cift tirnak (") yerine tek tirnak (') kullanmak daha performanslidir. Cunku PHP cift tirnakli degiskenlerin icinde baska degisken olup olmadigina bakar. Ornek : echo "..." yerine echo '...' kullanmak daha hizlidir. Ama eger tirnaklarin icinde degisken olacaksa (Ornek: echo "Yasiniz $yas oldugu icin...";) yine mecburen ciftli tirnak kullanmak zorundasiniz...

29. echo ile birden fazla degiskeni ekrana yazdirirken birlestirmek icin nokta (.) yerine virgul (,) kullanmak daha hizlidir. $a="A"; $b="b"; $c="c"; echo $a.$b.$c; yerine echo $a,$b,$c; Not: Bu yontem sadece echo ile calisir.

30. Apache php sctiptini ziyaretciye HTML den 2-10 kat arasinda daha yavas ulastirir. Bu yuzden gerekmeyen yerlerde PHP ( ve benzeri ) scriptleri kullanmamalisiniz.

31. PHP scriptleriniz her calismalarinda yeniden derlenirler. Bu da performans kaybina sebep olur. PHP opcode cache uygulamalari ( zend optimizer , apc, ioncube php accelerator, xcache, turck mmcache gibi ) scriptlerin 1 kere derlenmesini ve degismedikleri surece tekrar derlenmemelerini saglayarak %20 ile %100 arasinda performans artisi saglayabilir.

32. Olabildigince Cache yapmaya calisin. Memcached kullanin. Memcached, yuksek performansli nesne tamponlama ( cache ) sistemidir. Dinamik web uygulamalarinda veritabani uzerindeki yuku azaltarak hiz ver performans artisi saglar. Daha genis bilgi icin

33. Stringlerle calisirken string boyutunu almak icin strlen() kullanirsiniz. Bu fonksiyon herhangi bir islem yapmadan, zaten zval (PHP icinde degiskenleri tutmak icin kullanilan bir C dili yapisi) yapisinda bilinmekte olan bir degeri size gosterir. Yine de strlen() bir fonksiyondur ve bir cagri kullanir. Bu yuzden de yavastir. Bu asamada isset() fonksiyonunu kullanarak bir miktar hiz elde edilebilir. if (strlen($degisken) < 5) { echo “Degisken cok kisa”; } yerine if (!isset($degisken{5})) { echo “Degisken cok kisa”; }
isset() kullanmak, strlen() kullanmaktan daha hizlidir. Cunku isset() fonksiyonu icin strlen() fonksiyonunda yapilan bir cok islem yapilmaz.

34. Bir degiskenin degerini artirmak veya eksiltmek icin $i++ veya $i-- kullanmak ++$i veya --$i kullanmaktan daha yavastir. Bu sadece PHP ye ozgu birseydir. ++$i icin 4 opcode kullanilir, ancak $i++ sadece 3 opcode'a ihtiyac duyar.

35. Nesne Yonelimli Yazilim (OOP) hersey degildir. Cunku nesne yonelimli programlamada her fonksiyon icin hafizada bir yer ayrilir.

36. Her veyi yapisini sinif ( class ) olarak olusturmayin, diziler ( array ) ayni oranda kullanislidir.

37. Metodlari gereksiz yere bolmeyin. Tekrar kullanacaginiz kodlari belirleyip ona gore calisin.

38. Sadece ihtiyaciniz oldugunda metodlari ayirin.

39. Make use of the countless predefined functions

40. Eger kodunuzda cok fazla zaman ve islemci harcayan fonksiyonlari C ile extension olarak yazabilirsiniz. Ornek : template ve caching sistemi olarak kullanilan sistemlerden php_blitz bir php extensionu olarak calismaktadir. Bu yuzden php koduyla calisan smarty gibi sistemlere performans acisindan fark atmaktadir.

41. Kodunuzu tanimlayin. Yani neresinde ne kadar zaman ve islemci harcandigini tespit edin. Bunun icin Xdebug gibi bir eklenti kullanabilirsiniz. Bu sayede kodunuzun nerelerde yavasladigini tespit edebilirsiniz.

42. mod_gzip kullanin. mod_gzip, html ciktiyi zipleyerek sIkIstIrIr ve kullaniciya gidecek veri miktarini %80 e kadar dusurerek hizda artis, trafikte azalma saglar.

Yorum (yok) Yorum yaz!