Kategoriler
Php uygulamalari

Php ile resim linkini alma yöntemleri [src kısmı!]

Phpde genelde lazım olan bir konudur arkadaşlar. Çoğu zaman işlem yaptığımız kodlarda yada yazı içerisinden resim linklerini ayırmak istediğimizde bize doğru sonucu vermesi bakımından böyle kodlara ihtiyaç duyarız. Php bir programlama dili olduğundan bir çok farklı yol ve yöntem üretilebilir, ancak ben burda en doğru sonucu alabileceğiniz yapıları örnekleriyle vermeye çalışacağım.

Örnek kullanacağımız resim kodu bu olacak:

<img border="0" src="/images/image.jpg" alt="Image" width="100" height="100" />

 1. yöntem: HTML DOM Document Sınıfı

Bu yöntem benim genelde tercih ettiğim ve en doğru kesin sonucu veren bir yol. kod içerisindeki resme ait src kısmını aşağıdaki şekilde alabilirsiniz. Ancak unutmamanız gereken diğer elemanları almak istersenizde kullanabilirsiniz, örneğin: alt, title v.s

$html = '<img border="0" src="/images/image.jpg" alt="resim" width="100" height="100" />';

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$src = $xpath->evaluate("string(//img/@src)");

// sonuc: /images/image.jpg
echo $src;

Bu kod sadece resimler için kullanılmamaktadır. Adı üstünde html dokümanları üzerinde işlem yapabilmeyi kolaylaştıran bir araç niteliğindedir. Bir yazı içinde çözmek istediğiniz her türlü yapı üzerinde işlem yapabilirsiniz. uzun uzadıya bu konuya deignmeyeceğim, bunun yerine php‘nin kendi sitedinden yararlanabilirsiniz. Yukarıdaki dom sınıfı için buradaki siteden örnek aldım.

2. yöntem: Preg Match

Bu yöntemde phpnın düzenli ifadeler üzerinde işlem yapılabilmesine olanak veren fonksiyonudur. Bir yazı yada kalıp içerisinde regex ile eşleştirme yaparak bize sonucu verir. Örnek kod uygulamamız:

$html = '<img border="0" src="/images/image.jpg" alt="resim" width="100" height="100" />';

preg_match( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i' , $html, $match );

$src = array_pop($match);

// sonuc: /images/image.jpg
echo $src;

Yukarıdaki kodlarda kesin sonucu verecektir arkadaşlar, uygulamalarınızda gönül rahatlığı ile kullanabilirsiniz.

 

Kategoriler
Php uygulamalari Wordpress faydalı kodlar

PHP | WordPress sitelerinize otomatik yazi gonderin!

Yakin zamanda kullandigim wordpress.com daki bloguma otomatik olarak kendi sunucum uzerinden yazi gonderme uygulamasini paylasmak istiyorum. Uygulamaya yine internet uzerinden denk geldim, kullandim, biraz duzenledim ve yayinliyorum, umarim sizlerinde isini gorecek duzeydedir.

Dosyalar uzerinde cok fazla guvenlik onlemi bulunmamaktadir, bu sebeple kullanacak arkadas kodlari incelerse iyi olacaktir yada baskalarinin bilmedigi bir alanda kullanin, boylece guvenlik derdinizde olmaz, cunku sadece siz kullaniyor olacaksiniz.

Dosyalari indirmek icin buradaki baglantiyi tiklamaniz yeterli. At calistir bir uygulamadir arkadaslar, yani host yada sunucunuza yukleyin, sonrada wordpress.php dosyasini tarayiciniz ile calistirin, karsiniza bir form cikacak bu form da gerekli bilgileri girerek gonderin. sonuc yaziniz basarili bir sekilde gitmistir olacaktir, kesin :D Yetenekli php yazilimcilari bu uygulamayi formsuz, otomatik ve sitelerindeki yazilari paylasmak icin kullanabilirler :)

Kategoriler
Php uygulamalari

PHP | Blogger sitenize otomatik yazi gonderme!

Benim gibi zamanı olmayan yada uğraşmak istemeyen üşengeçler olabilir. Yakın zamanda faydalandığım bir php class uygulamasını düzenledikten sonra yayınlamak istedim.

blogger-e-yazi-gonderme-php

Genelde paravan blogları bulunan kişilerin tercih edeceği bir yöntem olan blögger sitenize otomatik yazı gönderme uygulamasını servis ediyorum. Uzun uzadıya anlatmayacağım dosyaları aşağıdaki bağlantıdan indirebilirsiniz.

İndir: http://bit.ly/1kuoKwN

Kodları basit tutmaya çalıştım. Özellikle form kısmını. Dosya açıp düzenlemenize gerek kalmadan giriş bilgilerinizi ve hangi blögger bloğuna yazıyı göndereceksiniz İD sini yazıp alt kısımdaki başlık, açıklama ve etiket kısmını doldurup göndermeniz yetiyor. Örnek bir resim yukarıda ekledim, bu yazı yayınlandığında sorunsuz şekilde çalışıyor ve kullanılıyordu :)

Uygulamayı geliştirebilirsiniz arkadaşlar yada basit şekliyle (suanki gibi) kullanabilirsiniz. Geliştirmeyi yada kullanmayı düşünen arkadaşlar önerim güvenlik alanında da kodlarda güncelleme yapmanız. Güvenlik konusuna fazla zaman ayırmadım, basit ve ham şekliyle sunmak istedim. Geliştirmek isteyen arkadaşlar her türlü önlemi ve güvenliği ekleyebilirler.

Kullanım konusuna gelince, yapmanız gereken tek şey, dosyaları host’unuza yüklemek ve blögger.php dosyasını tarayıcınız ile açmak. Karşınıza çıkan form’ü kullanarak içeriklerinizi kolayca ve hızlı bir şekilde blögger bloğunuza gönderebilirsiniz.

Bunu daha hızlandırmak isteyen arkadaşlar içeriklerini databaseden çekerek while yada foreach döngüleri arasına kodları yerleştirerek içeriğinizi gönderebilirsiniz. Yada cron job ile dosyanın belli aralıklarda çalışarak databaseden belli sayıda içeriği paravan bloglarınıza göndermesini sağlayabilirsiniz.

Burda dikkat etmeniz gereken bir diğer konu günlük belli bir sayıda içerik girilmesine izin veriyor blögger, sonrasında resimli güvenlik önlemi piyasaya çıkıyor. Bu gibi bir durumda uygulama ile yazı göndermeniz imkansız oluyor çünkü güvenlik kısmını geçemiyor (geliştirmek isteyen varsa buyursun bu konuda). Ancak bu önlem dediğim gibi günlüktür, sonraki gün tekrar belirli bir limite kadar uygulama ile bloğunuza yazı gönderebilirsiniz. Yanlış anlaşılmasın, bu limite ulaşıldığında blögger panelinizden yine yazı gönderebilirsunuz, tek farkla güvenlik kodu istiyor sizden, yani resimdeki harfleri doğrulamanızı. Daha doğrusu insanmışın sen kardeşim diye yüzüne bağırıyor da diyebilirsiz.

Kelime yada harf hataları olabilir, mazur görün, sormak istediklerinizi konu altından yada mail yolu ile bana ulaştırabilirsiniz. Bir sonraki konuya kadar esenlikle kalın :)

Kategoriler
Faydalı Bilgiler Php uygulamalari Wordpress

WordPress SQL cache uygulaması – manuel duzenleme!

Daha once burada yazdigim php ile sql cache uygulamasinin bir benzerini wordpress icin hazirlamistim. Halihazirda satisa cikarttigim, hatda suanda makaleci.com uzerinde sidebar, header, footer gibi kisimlarda kullandigim uygulama icin israr eden ve ihtiyaci olabilecek arkadaslar onuruna zaman ayirip bu beklentiyi sonuclandirmaya calisacagim.

Uygulamanin bir cok yarari var, bunu temalarimda ve kullandigim wordpress sitelerde kullanmamdan anlayabilirsiniz. WordPress File cache ve sql cache eklentilerinin cok yuzeysel calismasi, belirli bir kisitlama getirilememesi ustune 5-10 saniyeye kadar varan cache alma suresinin kullaniciyi ciddi anlamda bunalttigini dusunursek, suanda paylasacagim uygulamanin bir nimet oldugunu soyleyebilirim :)

Uygulama sadece temaniza uyarlayacaginiz bir kod kalibindan olusmaktadir, bu kod kalibi haricinde extra bir islem yapmaniza gerek kalmayacak. Bu uygulamada wordpressin kendi fonksiyonlarini kullandim. Bunlardan en onemlisi veritabanina genelde tema yapimcilarinin ayar bilgilerini kaydetmek icin kullandigi (benimde) “option” ekleme fonksiyonudur. Uygulama sirasinda kullanacagimiz fonksiyonlar bunlar:

update_option, add_option, get_option

Birazda mantikdan bahsedelim:
kalip kodumuzu uyguladigimiz bolgede sorgu sonucunda ortaya cikan kodlar (html) php serialize uygulamasina tabi tutularak add_option ile veritabanina eklenir. Bunu yaparken extra bir alan ilede bu ekledigimi cache alaninin zamanini kaydediyoruz. Boylece bir sonraki istek de cache suresini kontrol ederek eskimis ise update_option ile guncelleyecegiz, yok hala belirledigimiz sure icerisinde isede direk ekrana yazdiracagiz, boylece daha once 50 sorguya neden olan fonksiyon ve sunucuyu zorlayan php uygulamalari 1 veya 2 sorguya inecektir.

Bunun anlami 150 sorgu olan sitenizin 10-15 sorguya kadar dusurulebilecegidir. Enguzel yani ise cacheye alinmasini istemediginiz bolumleri bu uygulama disinda birakabiliyorsunuz, boylece guncelligini koruyabiliyorsunuz istediginiz alanlarin. Bunlar nereler olabilir, yazi okuma alani (single.php) burdaki yorum kisimlari, okunma sayisi, oylama sayisi gibi kisimlarin gosterimi v.s. yada ornegin sidebarda cok fazla sorgu yapan bilesenler, widgetler var. ama guncelligini korumak istediginiz bolumlerde var. Isde bu sirada yeni bir bilesen alani ekleyip cacheye alinmasini istediginiz ve cok fazla sorgu yapan bilesenleri buraya ekleyebilir, sonrada sidebar kodlariniza burdaki kod kalibini uygulayarak sisteminizi rahatlatabilirsiniz.

Fonksiyon dosyasina ekleyecegimiz bir kac kod ilede yeni yazi, yeni sayfa yada yazilarinizi guncellediginizde cachelerin bosaltilmasini saglayacagiz, boylece sitemizin guncelligi herdaim devam edecek :)

Neyse lafi fazla uzatmak iyi degil, konuyu iyi anlamaniz ve yararlari hakkinda bu kadar bilgi yeterli sanirim. Simdi size tema dosyalarinizda cacheye alinmasini istediginiz bolumlere uygulamaniz gereken kodu veriyorum:

// php tablari icine eklemeniz gerekli: < ?php ------- ?>
// Cache uygulayacaginiz alana ozel isim girin, her yeni alan icin yeni isim belirlemeniz gerekli.
$cacheismi = "CACHE1";

// CAcheye alinacak alan icin zaman tablosunu degiskene atiyoruz.
$dbdekicachezamani = get_option( 'Kuaza_'.$cacheismi.'saat');


// eger zaman tablosu varsa isleme devam ediyoruz, yoksa else ile zaman tablosu ekleyecegiz sonra.
if(isset($dbdekicachezamani)){

// burada cachede kalmasini istediginiz sureyi belirliyoruz. 10 kismini istediginiz kadar artirabilirsiniz. dakika cinsinden girin. 10 = 10 dakika
$cachetime = 60 * 10;

/*
DB de kayitli cache zamanini belirledigimiz cache suresinden eski olup olmadigini kontrol ediyoruz, 
eger zamani gecmemis ise direk ekrana yazdiriyoruz yada gecmis ise update kismini calistiriyoruz.
*/ 
if (time() - $cachetime < $dbdekicachezamani) {

// Cache suresi belirledigimiz surenin icindeyse kdolari ekrana bastiriyoruz ve islem tamamlaniyor.
echo unserialize(get_option( 'Kuaza_'.$cacheismi));


}else{
//eger cache suresi belirledigimiz zamani gecmis ve eskimis ise guncelleme alani calisiyor, yani burasi.

ob_start();



/*CAche alinmasini istediginiz kodlariburaya eklemeniz gerekli.*/
//----->>>cacheye alinacak kodlar buraya yazilmali
/*CAche alinmasini istediginiz kodlariburaya eklemeniz gerekli.*/



update_option( 'Kuaza_'.$cacheismi, serialize(ob_get_contents()) );
update_option( 'Kuaza_'.$cacheismi.'saat', time() );
// ustde update ile databasedeki tablolari ve cache zamanini guncelliyoruz, sonraki isteklerde guncel cache gosteriliyor.

ob_end_flush();
}

}else{
//Eger veri tabaninda cache zamani veya cache alani ekli degilse yeni cache alip yeni alan ekliyoruz.

ob_start();




/*CAche alinmasini istediginiz kodlariburaya eklemeniz gerekli.*/
//----->>>cacheye alinacak kodlar buraya yazilmali
/*CAche alinmasini istediginiz kodlariburaya eklemeniz gerekli.*/




add_option( 'Kuaza_'.$cacheismi, serialize(ob_get_contents()), '', 'yes' );
add_option( 'Kuaza_'.$cacheismi.'saat', time(), '', 'yes' );
// Yukaridaki kod ilede yeni cache alanimiz ve cache kodlarimiz tabloya eklenmis oldu. Bir sonraki calismasinda cache gosterilecek.
ob_end_flush();
}

Kod kalibini saglikli sekilde anlayabilmeniz icin tekrar elden gecirip, tek tek aciklama yazdim. boylece isleyis asamasinda nelerle karsilasildigini ve sistemin mantigini kolayca anlayabilirsiniz.

Uygulama tek bir kaliptan olusur, yukaridaki kodlari istediginiz yere ekleyerek uygulama yapabilirsiniz. Birden fazla alan icin kullanabilirsiniz. Ancak unutmamaniz gereken kod icerinde en ustdeki cache ismi kismini her alan icin yeniden duzenlemek. tire yada alttire kullanmayin cache ismini belirtirken.

Cacheye alinacak kodlari uygulamada iki yerede ayni sekilde eklemeniz gerek. Kod icerisinde buraya yani:

/*CAche alinmasini istediginiz kodlariburaya eklemeniz gerekli.*/
//----->>>cacheye alinacak kodlar buraya yazilmali
/*CAche alinmasini istediginiz kodlariburaya eklemeniz gerekli.*/

Kodlari hazirlarken suanda test etmedim, cunku daha pratik ve kolay olmasi acisindan cache ismini degiskene atatim, boylece kalip kodun heryerinde isim degismenize gerek kalmayacak. Ancak hata ile karsilasan olursa konu altindaki yorum kismini bir zahmet kullani versin.

Simdi sitemizin guncelligini korumasini saglamak icin yeni yazi yayinlandiginizda yada yazilarinizi guncellediginizde otomatik olarak cache alanlarini sifirlayacak ve guncelleyecek kodumuzu fonksiyon dosyamizda uygun bir yere ekleyin (tercihen en alta, php kod bitiriciden hemen once)

function kuaza_cachesilhepsini(){
// Kullandiginiz butun cache alanlarinin isimlerini belirtin burda.
$array = explode_trim("CACHE1","CACHE2","CACHE3","CACHE4");

// Alt kisimlari ellemeyin.
foreach ($array as $v){
delete_option( 'Kuaza_'.$v.'saat' );    delete_option( 'Kuaza_'.$v );
}
}
add_action('publish_post', 'kuaza_cachesilhepsini');
add_action('update_post', 'kuaza_cachesilhepsini');

Yukaridaki kodu tema klasoru icindeki functions.php dosyasina php kodlari icine ekleyin, uygun bir yere tabi. Kod icerisinde cache isimlerini belirteceginiz alan vardir, bu alani kullanarak kullandiginiz cache alanlarinin isimlerini girin.

Bu uygulamada bu kadar, kodlari yazarken kafadan yazdim arkadaslar, eger hata alirsaniz yorum kismini kullanarak aldiginiz hatayi ve hatayi aldiginiz kod satirindaki kodlari buraya yazin, zamanim oldugunda konuyu ve uygulamayi o yonde guncellerim.

Kategoriler
Php uygulamalari Php ve mysql Webmaster yardım

Php ile sql cache uygulamasi: Sisteminizi rahatlatin, sitenizi hizlandirin!

Sql cache, file cache ile nerdeyse ayni mantiga sahip bir php cache uygulamasidir. Tek farki sql cache verileri disk uzerinde degil mysql tablolarinda tutmasidir. Bunun file cache’ye gore bir cok artilarinin oldugunu dusunuyorum. Cunku bazi olumsuz durumlar file cache yapisinin iyi sekilde calisamamasina neden oluyor. Ornegin kullandiginiz hostun yada sunucunun disk yapisinin veya yazma hizinin dusuk olmasi cache sirasinda yavaslamalar ve optimasyon sorunlari yasamasina neden olur. Ozellikle SATA diskler uzerinde bu biraz daha gozle gorulur derecede kendini hissettirmektedir. SSD ve sas disk yapilari file cache icin en uygun olanlari ancak bunun eksikliginde sizlere sql cacheyi tavsiye edecegim. Mysql yapisi hizli islem yapmaya cok musait, file cacheden daha hizli ve aktif sekilde kullanim alani yaratir size.

Normalde localhostda sql cache yazisi icin denemeler ve testler yapiyordum, bunun icin bir kalip hazirladim, bu kalibi kullanarak birden fazla alan icin cache olusturabilirsiniz. Hazirladigim kalipda sadece cache alinacak alanin ismi ve cachede bekletilecegi suresini girmeniz yeterli olacak. Ve cache alinacak alanida belirttikten sonra hic ellemeden zamani geldiginde o bolum kendini guncellemis olacak. Mantik olarak cache alinan alanin ne kadar cachede kalacagi ve ne kadar ayni sorgunun gosterilecegini belirtebiliyoruz. boylece cache almadan onceki 50,100lerce sorguyu tek sorguya indirgemis olacagiz.

Uygulama iki bolumden olusuyor:

1: Fonksiyon bolumu, sizin duzenlemenize gerek olmayan bolum.

2: Cache icin kullanacaginiz kalip kod yigini.

Anlatima baslarken bunun biraz karisik gelebilecegini ancak mantik yuruttugunuzde gayet basarili bir calisma oldugunu anlayacaksiniz. Ayni tarz sistemi ayri tablo acmadan, sadece hazirladigim kod yiginini kullanarak wordpress de de istediginiz alani (buyuk sorguya neden olan yerleri) cache ye alabileceksiniz ki bu wordpress icin olan dokumani bir sonraki yazimda yazacagim.

Oncelikle kodu uygulayacaginiz sayfada mysql baglantisinin saglanmis olmasi gerekli, eger mysql baglantisi saglanmamis ve yeni basliyorsaniz asagidaki mysql baglanma kod yapisini kullanabilirsiniz, tabi oncesinde bu islem icin database olusturmaniz gerekli, yada var olan databaseye baglanti acmaniz gerekli asagidaki kod ile:

$conn = mysql_connect("localhost", "KULLANICI", "SIFRE");

if (!$conn) {
echo "baglantida sorun var: " . mysql_error();
exit;
}

if (!mysql_select_db("DATABASE")) {
echo "kullanilamiyor bu database: " . mysql_error();
exit;
}

Kendinize gore duzenlemeyi unutmayin.

Bu islemin hemen ardindan cache verilerini tutacagimiz tablomuzu mevcut databasemize eklememiz gerekli. Asagidaki kodu phpmyadmin den sorgu kismindan uygulayin:

CREATE TABLE IF NOT EXISTS kuaza_sqlcache (

id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
cache_ismi varchar(64) NOT NULL DEFAULT '',
cache_icerik longtext NOT NULL,
cache_zamani varchar(30) NOT NULL DEFAULT '',
cache_suresi int(10) NOT NULL DEFAULT '60',
PRIMARY KEY (id),
UNIQUE KEY cache_ismi (cache_ismi)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Sorguladiginiz bu tabloya cache alanlari icin bize gerekli olan bilgileri kaydedecegiz, ve tekrar sonrasinda ekrana yazdiracagiz.

Simdi sira fonksiyonlarimiza geldi. Normalde fonksiyonlari kullanmamistim testlere ilk basladigimda, ancak hem kolaylik saglamasi hemde yeni arkadaslarin fonksiyonla olan baglarini guclendirmek adina boyle bir yol sectim. Hemde cache alacagimiz kalip kod yigini daha temiz ve sade bir duruma geldi. yinede bunu yazdigima bakmayin, anlayanlar icin basit, anlamayanlar icin biraz fazla gorunebilir :)

Bu fonksiyonlari ister ayri sayfadan, istersenizde cache alacaginiz sayfada bir yere ekleyin. Eger coklu bir sistemde calisiyorsaniz her sayfaya include ettiginiz belli dosyalariniz vardir, bu include ettiginiz dosyanin icerisine eklemeniz daha mantikli olacaktir.

/* Cache kontrol alani, buradan once kontrol yaptirip, sonrasinda gerekli islemlere baslayacagiz. */
function c_cachekontrol($cacheismi,$bilgiiste=""){
$sorgu=mysql_query("select cache_ismi,cache_icerik,cache_zamani,cache_suresi from kuaza_sqlcache where cache_ismi = '$cacheismi'");
$bilgi = mysql_fetch_array($sorgu);
if($bilgi > 0)
{
if($bilgiiste == "cache_zamani"){
return $bilgi["cache_zamani"];
}elseif($bilgiiste == "cache_suresi"){
return $bilgi["cache_suresi"];
}elseif($bilgiiste == "cache_icerik"){
return $bilgi["cache_icerik"];
}
}else{
return "tabloyok";
}
}

/* eger mysql tablomuz yoksa yeni tablo ve cache alinan kodlari tabloya yazdiracagiz,
boylece sonraki calistirmamizda bu kaydettigimiz tablodan cache alinacak.
*/
function c_yenicacheac($cacheismi,$cacheicerik,$cachesuresi="60"){
$alhepsini = $cacheicerik;
$zaman = time();
$yeniekle = mysql_query("INSERT INTO kuaza_sqlcache
(cache_ismi, cache_icerik, cache_zamani, cache_suresi)
VALUES ('$cacheismi', '$alhepsini', '$zaman','$cachesuresi')");
/*
Bu alanida sorgunun gerceklesip gerceklesmedini arka planda yani kullanici arayuzunde gostermeden ekrana basiyoruz.
Bunu gormek icin kaynak kod kismina bakmaniz yeterli olacaktir.
*/
if($yeniekle) {
return "";
} else {
return "";
}
}

/* Eger cache suresi belirledigimizden eski ise bu alan ilede varolan cache alanini guncelliyoruz. */
function c_cacheguncelle($cacheismi,$cacheicerik,$cachesuresi="60"){
$alhepsini = $cacheicerik;
$zaman = time();
$guncelle = mysql_query("UPDATE kuaza_sqlcache SET cache_icerik = '$alhepsini', cache_zamani = '$zaman', cache_suresi = '$cachesuresi' WHERE cache_ismi = '$cacheismi'");
/*
Bu alanida sorgunun gerceklesip gerceklesmedini arka planda yani kullanici arayuzunde gostermeden ekrana basiyoruz.
Bunu gormek icin kaynak kod kismina bakmaniz yeterli olacaktir.
*/
if($guncelle) {
return "";
} else {
return "";
}
}

Kod icerisinde ki alanlari anlayabileceginiz sekilde yorumlamaya calistim.

Simdi ise en can alici noktaya geldik diyebilirim. Cache almamizda bize en cok yardimci olacak alanlardan birisi, kalip kod yigini alanina geldik. Bunu sisteminize entegre etmeyi basardiginiz,da sonraki uygulamalarda zorluk cekmeyeceginize eminim. Bir kere yapan, sonraki eklemelerde zorlanmayacaktir.

Kod icerisinde gerekli aciklamalari yaptim, ancak sonrasinda da olayi daha iyi kavrayabilmeniz icin onemli bolumleri detayli sekilde yazacagim:

/*
cacheye alacaginiz bolum icin bir isim girin, 
boylece birden fazla alani cache alacaginizda farkli isimlerle 
yeni alanlar acabilirsiniz.
*/
$cacheismi = "cachedeneme4"; 

/*
Cacheye aldiginiz kodlarin ne SIKLIKLA yenilenecegini,
guncellenecegini buradan belirtebilirsiniz. Dakika cinsinden bir sayi girmeniz yeterli.
5 = 5 dakika, 60 = 1 saat.
*/
$cachesuresi = "160";

/*belirledigimiz cache ismini kontrol ettiriyoruz, varsa sonraki islemlere geciyoruz, yoksa yeni alan girip cache bolumu olusturuyoruz.*/
$bilgi = c_cachekontrol($cacheismi);

/* if ile daha once cache tablosunun acilip acilmadigini kontrol ediyoruz, eger tablo var ise sonraki adima geciyoruz. */
if($bilgi != "tabloyok"){

/* Buradan bize yardimci olacak cache zamanini ve belirlediginiz suresini aliyoruz. */
$db_cache_zamani = c_cachekontrol($cacheismi,"cache_zamani");
$db_cache_suresi = c_cachekontrol($cacheismi,"cache_suresi");

$cachetime = 60 * $db_cache_suresi; // 60 ile belirledigimiz cache suresini carparak suanki zamandan cikartacagiz, bir sonraki adimda.

/* 
if ile cachelenen icerigin zamanini hesapliyoruz ve 
daha once belirttigimiz dakikadan daha az ise (yani cache zamani icerisinde ise) cache zamani, 
direk cacheli alani ekrana yazdiriyoruz.
*/
if (time() - $cachetime < $db_cache_zamani) {

# cache belirttigimiz zaman icerisinde ise ekrana bastiriyoruz. Boylece tek sorguda hersey halletmis olduk.
echo unserialize(base64_decode(c_cachekontrol($cacheismi,"cache_icerik")));
echo "";
}else{
/*Eger cachenin suresi belirledigimiz dakikayi asmis ise, 
o zaman burdan yeniden normal kodlarimizi calistiriyoruz ve 
cache alanini guncellemesini sagliyoruz. */
ob_start();




// Cachelenecek kodlar ve sorgular alani (aynisi)





/* Ekrana basilan alanin kodlarini html alarak, var olan tabloyu yeniden guncelliyoruz. */
 echo c_cacheguncelle($cacheismi,base64_encode(serialize(ob_get_contents())),$cachesuresi); 
 
 ob_end_flush();
 }
 /* Zaman kontrol if fonksiyonu alani bitti, daha once actigimiz ve 
 tablo var yok kontrolu yaptigimiz if icin else alanina geciyoruz
 */

 }else{
 /* Eger sql cache alaninda belirledigimiz isimde bir cache alani yoksa, 
 buradan kodlarin html yapisini alarak yeni cache alanini ekliyoruz. 
 */
 ob_start();




// Cachelenecek kodlar ve sorgular alani (aynisi)





/* Alinan html kodlari yeni eklenecek tablomuza ekliyoruz. */
 echo c_yenicacheac($cacheismi,base64_encode(serialize(ob_get_contents())),$cachesuresi); 

 ob_end_flush();
 }
 /* Ve gerekli if kontrolleri bitti, yaptigimiz sorgu sayilari 1000 ken 2 oldu, hayirli olsun :) */

Kodlarin icerisinde butun alanlarin ne islem ve ne fonksiyon gorevi gordugunu belirttim.

Yinede unutmamaniz gereken kalip kod yigini alanindaki “Cachelenecek kodlar ve sorgular alani (aynisi)” kismi ikiside ayni olacak, yani bu alana cache alinmasini istediginiz sorgularinizi, kodlarinizi girmeniz gerekli. Genelde yuksek soegular oluyor, 50,60 sorgu gibi, o zaman buradaki uygulama ile sorgu sayisi 2 ye kadar dusecektir. Boylece gerek acilislarda olsun, gereksede sonraki sayfa gezintilerinde sitenizde gozle gorulur hizlanma olacaktir. bunun yaninda sunucunuzu yada hostunuzu rahatlatmasida cabasi :)

Bu uygulamanin faydasi bir tek mysql sorgularinda olmuyor arkadaslar, sistemi zorlayacak php sorgularinda veya fonksiyonlarinda da cache alma islemi uygulandigi icin ciddi derecede sisteminizi rahatlatacaktir.

Sitenizin hizlanacaginida hesaba katarsaniz hem kullanici sitenize girdiginde keyifli zaman gecirir, hemde arama motorlari icin cazip bir alan haline gelir. Guncellik konusuna deginmiyorum, orasi size bagli. Ancak hic bir kullanici, siz bile bir sayfanin acilmasini 5 saniye beklemek istemezsiniz :)

Uygulamayi gelistirmeye yetecek zamanim olursa el atar arada bir yenilikler eklemeye calisirim, bunun haricinde gelistirme amacli kodlari kullanacak arkadaslara simdiden basarilar diliyorum. Anlamadiginiz bir yer olursa konu altindan yorum ile beni uykumdan edip, pc basina cagirabilirsiniz.

Sevgiyle kalin, bol kodlu gunler :)

Kategoriler
Faydalı Bilgiler Php uygulamalari Webmaster yardım

PHP hatalarını görme – hata kodlarını sayfaya yazdırma!

Php programcısı iseniz bunları mutlaka elinizin altında bir yere koymanız gerek, çünkü çoğu serverda yada hoştda hata kodlarının gösterimi php.ini ayar dosyasından kapatılmıştır. Bunun nedeni güvenlik amaçlıdır, böylece sitemiz hata verdiğinde kötü niyetli kişiler dosya isimlerini, sunucudaki yerini v.s göremez. Ancak kodlama işi ile uğraşan arkadaşlar için bu iyi bir konu değil. çünkü çoğu zaman gözümüzden atladığımız bir şey olur ve onu bulmak için hatanın nerde olduğunu görmemiz gerek. İsde aşağıdaki kodlarda bize bunu sağlayacak.

Php de çalıştığınız dosyanın en başına işinize yarayan kodu ekleyerek hata aldığınızda bu hataların neden kaynaklandığını görebilirsiniz.

Tüm raporları kapatır

error_reporting(0);

Basit hataları gösterir

error_reporting(E_ERROR | E_WARNING | E_PARSE);

E_NOTICE kullanarak gereksiz hata mesajlarından kurtuluruz

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

E_NOTICE harici tüm hataları gösterir. Bu ayar varsayılandır, php.ini dosyasında yer alabilir

error_reporting(E_ALL ^ E_NOTICE);

Tüm PHP hatalarını gösterir (yeni)

error_reporting(E_ALL);

Tüm PHP hatalarını gösterir

error_reporting(-1);

error_reporting(E_ALL); ile aynı görev

ini_set('error_reporting', E_ALL);

Anlamadiginiz yerde sorabilirsiniz :)

Kategoriler
Php uygulamalari Webmaster yardım

Facebook’a Resim yukleme uygulamasi (php)

Bir onceki yazimda Facebook’a php programlamasi araciligi ile bilgisayarinizdan video yuklemeyi anlattim. Bu yazimda kolayca facebook’a kendi bilgisayarinizdan resim eklemeyi anlatacagim. Bu uygulamayi kullanicilariniza da acarak etkilesiminizi artirabilirsiniz..

Baslamadan once Facebook gelistirici kismindan API olusturmaniz gerekli, kullanacaginiz site icin olusturmus iseniz tekrar acmaya gerek yok, oradaki APP kodlarini kullanabilirsiniz. Ancak yeni acacaksaniz video upload anlatimimdaki asagidaki adimlari yapin:

Baslangic olarak Facebook sitesinde bir api anahtari olusturmaniz gerekli. Bunun icin buraya girerek bir api olusturun. API uygulamasinin ismi, aciklamasi ve site adresi gibi kisimlari, uygulamayi calistiracaginiz siteye gore hazirlanmali. Bunu istememin sebebi uygulama calistirildiginda kullanicinin facebook a baglanip bunun onaylanmasi istenecek. Burada Site adresiniz, uygulama ismi gibi bolumler gosterilecek. Kullanici onayindan sonrada upload alanina gidilecek ve kullanicinin bilgisayarindan video yukleyebilmesi saglanacaktir.

Api Uygulamasini olusturduktan sonra asagidaki kodlari sitenizde yeni bir php dosyasi olusturarak icine ekleyin:



Kuaza Facebook RESIM upload eklentisi..





< ?php

$app_id = "SENIN_APP_ID";
$app_secret = "SENIN_APP_SECRET_KODUN";
$my_url = "SAYFANIN_TAM LINKI";

$code = $_REQUEST["code"];

if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&scope=publish_stream";
echo("