<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Mustafa KIRIMLI</title> <atom:link href="http://blog.mustafakirimli.com/feed" rel="self" type="application/rss+xml" /><link>http://blog.mustafakirimli.com</link> <description>Ilgili araç ve kaynakları etkin bir şekilde kullanarak daha fazla kullanıcıya hizmet verin.</description> <lastBuildDate>Tue, 15 May 2012 07:00:23 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>XCache Key-Value Storage Özelliği</title><link>http://blog.mustafakirimli.com/xcache-key-value-storage-ozelligi/1642</link> <comments>http://blog.mustafakirimli.com/xcache-key-value-storage-ozelligi/1642#comments</comments> <pubDate>Tue, 15 May 2012 07:00:23 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[key-value storage]]></category> <category><![CDATA[php accelerators]]></category> <category><![CDATA[php hızlandırıcılar]]></category> <category><![CDATA[XCache]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1642</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda XCache]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda XCache ‘in key-value memory storage (bellekte değişken depolama) özelliğini inceleyeceğiz.<br /> <span id="more-1642"></span></p><p>XCache hakkında kuruluım ve kullanım bilgilerini içeren <a href="http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638">XCache Kurulum ve Kullanımı</a> başlıklı yazıyı yazıya başlamadan önce okumak isteyebilirsiniz.</p><h3 class="clear">XCache Key-Value Memory Storage Özelliği</h3><p>XCache&#8217;in bir başka özelliğide (APC &#8216;de de olduğu gibi) değişken önbellekleme yapan memory storage &#8216;dir. Bu özellik sayesinde belleğe attığınız bir değişkeni daha sonra (örneğin başka bir dosyadan) çağırabilirsiniz. Kullanılması son derece basit bir özelliktir. Ancak bu değişkenlere sadece aynı sunucudan erişilebilir (Memcache ve Redis gibi uygulamalarda olduğu gibi başka sunuculardan erişilemez yada dağıtık yapı kurulamaz).</p><h3>XCache Key-Value Memory Storage Avantajları</h3><p>XCache Key-Value Memory Storage özelliğinin en büyük artısı kullanımının son derece basit oluşudur. Normal bir fonksiyon kullanır gibi (herhangi bir sunucuya vs. bağlanmadan) değişkenleri depolayabilir yada okuyabilirsiniz.</p><h3>XCache Key-Value Memory Storage Dezavantajları</h3><p>XCache Key-Value Memory Storage özelliğinin aklımıza gelen dezavantajı sadece aynı sunucudan erişilebilmesidir. Yani XCache cache server olarak kullanılamaz.</p><h3>XCache Key-Value Memory Storage Kullanımı</h3><p>XCache değişken önbellekleme için en sık kullanılan 3 fonksiyon aşağıdaki gibidir;</p><ul><li>xcache_set – bir değişkeni belleğe ekler</li><li>xcache_get – bellekte bulunan bir değişkeni getirir</li><li>xcache_unset – bellekte bulunan değişkeni siler</li></ul><p><strong>XCache Belleğe Değişken Ekleme (xcache_set):</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// Örnek değişken
$page_title = "Hoşgeldiniz!";

// Değişkeni XCache 'ye page_title adıyla ekle
xcache_set("page_title", $page_title);
?&gt;</pre><p><strong>XCache Bellekten Değişken Okuma (xcache_get):</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// XCache 'den page_title adlı değişkeni al
echo xcache_get("page_title") . "&lt;br/&gt;\n";
?&gt;</pre><p>Çıktısı :</p><pre class="brush:xml">Hoşgeldiniz!</pre><p><strong></strong><strong>XCache Bellekten Değişken Silme (apc_unset):</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// Değişkeni XCache 'den kaldir
if( xcache_unset("page_title") ){
  echo "page_title silindi!&lt;br/&gt;\n";
}

// page_title 'i okumaya calis
echo  "page_title değeri : " . xcache_get("page_title") . "&lt;br/&gt;\n";
?&gt;</pre><p>Çıktısı:</p><pre class="brush:xml">page_title silindi!
page_title değeri :</pre><h3>Sonuç</h3><p>Eğer başka sunuculardan depoladığınız değişkenlere erişmek gerekmiyorsa XCache key-value storage özelliğini gönül rahatlığıyla  kullanabilirsiniz.</p><p>XCache aslen opcode caching yaptığı için yazı içerisinde “<strong>XCache key-value storage özelliği</strong>” vurgusu yaptık.</p><p>Yazıda kullanılan kodların bulunduğu dosyaları <a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/xcache-key-value-storage.zip">xcache-key-value-storage</a> linkinden indirebilirsiniz.</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/xcache-key-value-storage-ozelligi/1642/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>XCache Kurulum ve Kullanımı</title><link>http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638</link> <comments>http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638#comments</comments> <pubDate>Tue, 08 May 2012 07:00:17 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[kullanım]]></category> <category><![CDATA[kurulum]]></category> <category><![CDATA[php accelerators]]></category> <category><![CDATA[php hızlandırıcılar]]></category> <category><![CDATA[XCache]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1638</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda bir]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda bir PHP hızlandırıcısı olan <strong>XCache</strong> &#8216;in kurulum ve kullanımını inceleyeceğiz.</p><p><span id="more-1638"></span></p><p>PHP hızlandırıcılar hakkında temel bilgilere ulaşmak isterseniz <a title="PHP Hızlandırıcılar" href="http://blog.mustafakirimli.com/php-hizlandiricilar-php-accelerators/1601">PHP Hızlandırıcılar</a> başlıklı yazımıza bakmak isteyebilirsiniz.</p><p>Yanda bulunan resmin <strong>XCache</strong> logosu değil sadece temsil niteliğinde olduğunu belirtmeden geçmeyelim.</p><h3 class="clear">XCache Nedir ?</h3><p>Bir Lighttpd developerları tarafından geliştirilen <strong>XCache</strong>, Windows ve Linux üzerinde çalışabilen PHP hızlandırıcısıdır. Geliştiricinin ifadesine göre APC ve eAccelerator &#8216;ın eksikleri üzerine geliştirilmiştir.</p><h3>XCache Kurulumu ?</h3><p><a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/xcache-windows.png"><img class="alignright size-medium wp-image-1648" title="xcache-windows" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/xcache-windows-285x300.png" alt="xcache-windows" width="285" height="300" /></a></p><p><strong class="clear">Windows Üzerinde APC Kurulumu:</strong> Windows üzerinde XCache kurmak için <a href="http://xcache.lighttpd.net/pub/Releases/1.3.2/">bu</a> adresten PHP versiyonunuza uygun zip dosyasını indirip php_xcache.dll dosyasını PHP eklenti klasörüne kopyalayın (Örneğin: C:\PHP5\ext).</p><p>Daha sonra php.ini içerisine yine indirdiğimiz pakette bulunan xcache.ini ayarlarını kopyalayalım. Ayrıca <code>; extension = php_xcache.dll</code> satırının yorumunu kaldıralım ve sunucumuzu yeniden başlatalım.</p><p>İşletim sistemi : Windows XP SP2<br /> Web Server : Apache 2.2.22<br /> PHP : 5.2.17<br /> XCache : 1.3.2</p><p><a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/xcache-ubuntu-php-info.png"><img class="alignleft size-medium wp-image-1640" title="xcache-ubuntu-php-info" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/xcache-ubuntu-php-info-236x300.png" alt="xcache ubuntu php info" width="236" height="300" /></a></p><p><strong class="clear">Ubuntu (Linux) Üzerinde APC Kurulumu: </strong> Ubuntu üzerinde XCache kurmak için aşağıdaki komutu girmeniz yeterli.<br /> <code>sudo apt-get install php5-xcache</code><br /> Daha sonra web sunucusunuzu (apache, nginx vb) restart edin.<br /> Ubuntu için phpinfo() çıktısında bulunan XCache alanı yandaki resim gibi olacaktır.</p><p>Kurulum esnasında mevcut PHP hızlandırıcılar muhtemelen devre dışı kalacaktır. Siz yinede kurulumdan önce yedek alırken mevcut PHP hızlandırıcı ayarlarınıda dahil etmeyi unutmayın.</p><p>Ayrıca kurulumdan önce mevcut PHP hızlandırıcınızı devre dışı bırakmanız uygun olabilir.</p><h3 class="clear">XCache &#8217;in Önemli Ayarları</h3><p>XCache &#8216;i ayarlamak için Windows üzerinde php.ini dosyasını, Ubuntu üzerinde (diğer Linux sürümlerinde benzer olabilir) <strong>/etc/php5/conf.d/xcache.ini</strong> dosyasını kullanabilirsiniz. XCache &#8216;in ayarları <a title="Alternative PHP Cache (APC) Kurulum ve Kullanımı " href="http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600">Alternative PHP Cache (APC) Kurulum ve Kullanımı</a> başlıklı yazımızı okuyan veya daha önce APC kurulumu yapmış olan ziyaretçilerimize çok tanıdık gelebilir. Bunun nedeni XCache &#8216;in <strong>APC</strong> ve <strong>Eaccelerator</strong> dan yola çıkılarak yazılmış olması veya kullanıcıların kolay geçiş yapabileceği bir söz dizimi tasarlanması olabilir.</p><p><strong>Opcode için bellek boyutu;</strong> XCache &#8216;in varsayılan ayarlarında genellikle 32MB bellek alanı direktifi ile gelir. Eğer kodlarınız bu boyutu aşıyorsa değiştirmeniz öneriliyor. Örnek ayar aşağıdaki gibidir.</p><pre class="brush:perl">#xcache.size = 32M #max 32mb bellek kullan (default/varsayilan)
xcache.size = 256M #256 mb bellek kullan</pre><p><strong>Dosya değişiklik kontrolü;</strong> Ayrıca bir başka önemli ayarda XCache &#8216;in dosyaların değişip değişmediğine bakıp cachelenen dosyaları güncellemesidir. Eğer dosyalarınız sık sık (dakika bazında) değişmiyorsa bu ayarı kapatmanız performansı daha da artıracaktır. Ancak unutulmaması gereken nokta xcache.stat direktifini off &#8216;a ayarladığınızda XCache &#8216;i temizlemediğiniz sürece dosyaları değiştirseniz bile bellek kopyasındaki halinin çalışacağıdır. Örnek ayar aşağıdaki gibidir.</p><pre class="brush:perl">#xcache.stat = On #dosya degistiginde bellegi guncelle (default/varsayilan)
xcache.stat = Off #dosya degisikliklerini kontrol etme (daha iyi performans)</pre><p><strong>Bellekte değişken depolamayı aktif etme;</strong> Başlangıç için XCache &#8216;in bir diğer işimize yarayabilecek önemli ayarı ise bellekte değişken depolama özelliğini aktif eden direktif olabilir. Bizim kurulumumuzda bu özellik kapalı olarak geldi. Eğer bellekte değişken depolama özelliğini aktif etmek isterseniz aşağıda nasıl etkinleştirileceğini gösteren örnek ayar mevcut.</p><pre class="brush:perl">#xcache.var_size = 0M #bellekte degisken depolama kapali (default/varsayilan kapalı)
xcache.var_size = 32M # bellekte degisken depolama için 32M alan kullan (açık)</pre><h3>XCache İzleme / Gözlemleme</h3><p>XCache &#8216;i ve bellekte bulunan dosyaların istatistiklerini izlemek için XCache admin arayüzü kurulumla birlikte gelir. Biz yinede bu dosyanın varsayılan halini paylaşıyoruz (<a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/xcache-admin.zip">xcache-admin</a>). Bu arayüz sayesinde bellek kullanım miktarı, belleğe alınan dosyaların aldığı hitler, kullanıcı tarafından eklenen (xcache_set) değişkenler gibi bir çok istatistiğe ulaşabilirsiniz.</p><p>Ancak bu arayüze erişebilmeniz için XCache ayar dosyasında (bir önceki adımda bahsettiğimiz php.ini / xcache.ini)  <strong>xcache.admin.pass</strong> satırını güncellemeniz gerekir. Bu satıra md5 ile şifrelenmiş bir değer girmeniz gerekir. Bunu yapmak için birçok yol olduğu gibi xcache admin dosyalarının içinde gelen <strong>mkpassword.php</strong> dosyasınıda kullanabilirsiniz.</p><a href='http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638/xcache-administration' title='XCache-administration'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/XCache-administration-150x150.png" class="attachment-thumbnail" alt="XCache administration" title="XCache-administration" /></a> <a href='http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638/xcache-administration-list-php' title='XCache-administration-list-php'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/XCache-administration-list-php-150x150.png" class="attachment-thumbnail" alt="XCache administration list php" title="XCache-administration-list-php" /></a> <a href='http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638/xcache-administration-list-variables' title='XCache-administration-list-variables'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/XCache-administration-list-variables-150x150.png" class="attachment-thumbnail" alt="XCache-administration-list-variables" title="XCache-administration-list-variables" /></a> <a href='http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638/xcache-administration-edit-variable' title='XCache-administration-edit-variable'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/04/XCache-administration-edit-variable-150x150.png" class="attachment-thumbnail" alt="XCache-administration-edit-variable" title="XCache-administration-edit-variable" /></a><h3>XCache &#8216;in Memory Storage Özelliği</h3><p>XCache&#8217;in bir başka özelliğide (APC &#8216;de de olduğu gibi) değişken önbellekleme yapan memory storage &#8216;dir. Bu özellik sayesinde belleğe attığınız bir değişkeni daha sonra (örneğin başka bir dosyadan) çağırabilirsiniz. Kullanılması son derece basit bir özelliktir. Ancak bu değişkenlere sadece aynı sunucudan erişilebilir (Memcache ve Redis gibi uygulamalarda olduğu gibi başka sunuculardan erişilemez yada dağıtık yapı kurulamaz). Detaylı kullanım bilgisi için <a title="XCache Key-Value Storage Özelliği" href="blog.mustafakirimli.com/xcache-key-value-storage-ozelligi/1642">XCache Key-Value Storage Özelliği</a> başlıklı yazıyı inceleyebilirsiniz.</p><h3>XCache Önbellek Boşaltma</h3><p>XCache &#8216;in belleğe aldığı tüm dosyaları ve <strong>xcache_set</strong><strong></strong> kullanılarak eklenmiş değişkenlerin tamamını silmek için XCache admin arayüzünü veya <strong>xcache_clear_cache</strong> fonksiyonunu kullanmanız gerekiyor. Fonksiyon ile silmek için örnek dosya aşağıdaki gibidir.</p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// XCache eklentisi yüklü mü
if( false == extension_loaded('XCache') ) {
  echo "XCache eklentisi yüklü değil!";
  exit;
}

// Tum XCacheler icin donguye gir
for($i = 0; $i &lt; xcache_count(XC_TYPE_PHP); $i++){
  // XCache PHP cache temizle.
  xcache_clear_cache(XC_TYPE_PHP, $i);
  echo "$i. XCache opcode belleği temizlendi!&lt;br/&gt;\n";
}

for($i = 0; $i &lt; xcache_count(XC_TYPE_VAR); $i++){
  // XCache degisken cache temizle.
  xcache_clear_cache(XC_TYPE_VAR, $i);
  echo "$i. XCache değişken belleği temizlendi!&lt;br/&gt;\n";
}

?&gt;</pre><p>XCache admin arayüzünden silmek için, XCache admin arayüzüne  login olduktan sonra anasayfada <strong>Caches</strong> bölümü altında bulunan opcode (php#0, php#1, php#2 ..) ve değişken bellekleme (var#0, var#1, var#2 ..) bilgilerinin bulunduğu satırdaki clear butonuna tıklamanız yeterli olacaktır.</p><h3>Sonuç ?</h3><p>XCache, rakiplerinden aşağı kalır yanı olmayan kullanım alışkanlığınıza veya kendine has özellikleri için kullanmak isteyebileceğiniz güzel bir PHP hızlandırıcısıdır.</p><p>Sonraki yazılarımızda görüşenedek bol optimizasyonlu günler diliyoruz.</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Alternative PHP Cache (APC) Key-Value Storage Özelliği</title><link>http://blog.mustafakirimli.com/alternative-php-cache-apc-key-value-storage-ozelligi/1615</link> <comments>http://blog.mustafakirimli.com/alternative-php-cache-apc-key-value-storage-ozelligi/1615#comments</comments> <pubDate>Tue, 01 May 2012 07:00:48 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Alternative PHP Cache]]></category> <category><![CDATA[APC]]></category> <category><![CDATA[php]]></category> <category><![CDATA[php accelerators]]></category> <category><![CDATA[php hızlandırıcılar]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1615</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda Alternative PHP]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda Alternative PHP Cache (APC) &#8216;in key-value memory storage (bellekte değişken depolama) özelliğini inceleyeceğiz.</p><p><span id="more-1615"></span></p><p>Alternative PHP Cache (APC) hakkında kuruluım ve kullanım bilgilerini içeren <a title="Alternative PHP Cache (APC) Kurulum ve Kullanımı" href="http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600">Alternative PHP Cache (APC) Kurulum ve Kullanımı</a> başlıklı yazıyı yazıya başlamadan önce okumak isteyebilirsiniz.</p><h3>APC Key-Value Memory Storage Özelliği</h3><p>APC &#8216;nin bir başka özelliğide değişken önbellekleme yapan memory storage &#8216;dir. Bu özellik sayesinde belleğe attığınız bir değişkeni daha sonra (örneğin başka bir dosyadan) çağırabilirsiniz. Kullanılması son derece basit bir özelliktir. Ancak bu değişkenlere sadece aynı sunucudan erişilebilir (Memcache ve Redis gibi uygulamalarda olduğu gibi başka sunuculardan erişilemez yada dağıtık yapı kurulamaz).</p><h3>APC Key-Value Memory Storage Avantajları</h3><p>APC Key-Value Memory Storage özelliğinin en büyük artısı kullanımının son derece basit oluşudur. Normal bir fonksiyon kullanır gibi (herhangi bir sunucuya vs. bağlanmadan) değişkenleri depolayabilir yada okuyabilirsiniz.</p><h3>APC Key-Value Memory Storage Dezavantajları</h3><p>APC Key-Value Memory Storage özelliğinin aklımıza gelen dezavantajı sadece aynı sunucudan erişilebilmesidir. Yani APC cache server olarak kullanılamaz.</p><h3>APC Key-Value Memory Storage Kullanımı</h3><p>APC değişken önbellekleme için en sık kullanılan 4 fonksiyon aşağıdaki gibidir;</p><ul><li><strong>apc_store</strong> &#8211; bir değişkeni belleğe ekler<br /> <strong></strong></li><li><strong>apc_add</strong> &#8211; bir değişkeni belleğe (aynı isimle) sadece bir defa ekler</li><li><strong>apc_fetch</strong> &#8211; bellekte bulunan bir değişkeni getirir</li><li><strong>apc_delete</strong> &#8211; bellekte bulunan değişkeni siler</li></ul><p><strong>APC Belleğe Değişken Ekleme (apc_store):</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// Örnek değişken
$page_title = "Hoşgeldiniz!";

// Değişkeni APC 'ye page_title adıyla ekle
apc_store("page_title", $page_title);
?&gt;</pre><p><strong>APC Bellekten Değişken Okuma (apc_fetch):</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// APC 'den page_title adlı değişkeni al
echo apc_fetch("page_title") . "&lt;br/&gt;\n";
?&gt;</pre><p>Çıktısı :</p><pre class="brush:xml">Hoşgeldiniz!</pre><p><strong>APC Belleğe apc_add Kullanarak Değişken Ekle:</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// Belleğe eklenmesini istediğimiz ve
// güncellenmesini istemediğimiz değişken
$app_version = "1.0";

// Değişkeni APC 'ye app_version adıyla ekle
if( apc_add("app_version", $app_version) ){
  echo "app_version eklendi!&lt;br/&gt;\n";
}

// Bellekte bulunan app_version değişkenini güncellemeye çalış
if( apc_add("app_version", "1.1") ){
  echo "app_version güncellendi&lt;br/&gt;\n";
}

// app_version değişkenini oku
echo  "app_version değeri : " . apc_fetch("app_version") . "&lt;br/&gt;\n";
?&gt;</pre><p>İlk Çalıştırıldığında Çıktısı:</p><pre class="brush:xml">app_version eklendi!
app_version değeri : 1.0</pre><p>İkinci Çalıştığında Çıktısı:</p><pre class="brush:xml">app_version değeri : 1.0</pre><p>Çıktılardan da anlaşılacağı üzere <strong>apc_add</strong> ile eklediğimiz değeri hiçbir şekilde güncelleyemiyoruz. Bu PHP &#8216;nin sabit tanımlama (<a title="constant" href="http://www.php.net/manual/tr/function.constant.php">constant</a>) özelliğine benzer yapıda çalışır.</p><p><strong>APC Bellekten Değişken Silme (apc_delete):</strong></p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// Değişkeni APC 'den kaldir
if( apc_delete("page_title") ){
  echo "page_title silindi!&lt;br/&gt;\n";
}

// page_title 'i okumaya calis
echo  "page_title değeri : " . apc_fetch("page_title") . "&lt;br/&gt;\n";
?&gt;</pre><p>Çıktısı:</p><pre class="brush:xml">page_title silindi!
page_title değeri :</pre><h3>Sonuç</h3><p>Eğer başka sunuculardan depoladığınız değişkenlere erişmek gerekmiyorsa APC key-value storage özelliğini gönül rahatlığıyla  kullanabilirsiniz.</p><p>APC aslen opcode caching yaptığı için yazı içerisinde &#8220;<strong>APC key-value storage özelliği</strong>&#8221; vurgusu yaptık.</p><p>Yazıda kullanılan kodların bulunduğu dosyaları <a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/05/apc-key-value-storage.zip">apc-key-value-storage</a> linkinden indirebilirsiniz.</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/alternative-php-cache-apc-key-value-storage-ozelligi/1615/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Alternative PHP Cache (APC) Kurulum ve Kullanımı</title><link>http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600</link> <comments>http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600#comments</comments> <pubDate>Tue, 24 Apr 2012 07:00:01 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Alternative PHP Cache]]></category> <category><![CDATA[APC]]></category> <category><![CDATA[php]]></category> <category><![CDATA[php accelerators]]></category> <category><![CDATA[php hızlandırıcılar]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1600</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda bir]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda bir PHP hızlandırıcısı olan APC (Alternative PHP Cache)  &#8216;nin kurulum ve kullanımını inceleyeceğiz.</p><p><span id="more-1600"></span></p><p>PHP hızlandırıcılar hakkında temel bilgilere ulaşmak isterseniz <a title="PHP Hızlandırıcılar" href="http://blog.mustafakirimli.com/php-hizlandiricilar-php-accelerators/1601">PHP Hızlandırıcılar</a> başlıklı yazımıza bakmak isteyebilirsiniz.</p><h3 class="clear">APC (Alternative PHP Cache) Nedir ?</h3><p>APC, PHP &#8216;nin <a title="PECL" href="http://pecl.php.net/">PECL</a> (PHP Extension Community Library) kütüphanesi içinde yer alan, Windows ve Linux üzerinde çalışabilen ve PHP &#8216;ye eklenti olarak kurulabilen bir PHP hızlandırıcısıdır. Ayrıca APC &#8216;nin PHP 6 içinde yerleşik olarak gelme ihtimali olduğunun konuşulduğunu haber vermiş olalım.</p><h3>APC Kurulumu</h3><p><a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-windows.jpg"><img class="size-medium wp-image-1602 alignright" title="php-apc-windows" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-windows-300x269.jpg" alt="PHP APC Windows" width="300" height="269" /></a><strong>Windows Üzerinde APC Kurulumu:</strong> APC kurulumu Windows için biraz sıkıntılı olsada imkansız değil. <a href="http://downloads.php.net/pierre/">http://downloads.php.net/pierre/</a> adresinden PHP sürümünüze uygun APC eklentisini indirip PHP eklentilerinizin bulunduğu (örn: c:/php/ext) dizin altına atın. Daha sonra php.ini içerisinde<br /> <code>extension = php_apc.dll</code><br /> direktifini ekleyip web sunucunuzu restart edin. Windows üzerinde APC kurulumu için <a title="Installing APC in Windows" href="http://docs.moodle.org/22/en/Installing_APC_in_Windows">Installing APC in Windows</a> adresini ziyaret edebilirsiniz. phpinfo() çıktısının yandaki gibi görünmesi gerekiyor.</p><p><a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-ubuntu1.png"><img class="alignleft size-medium wp-image-1605" title="php-apc-ubuntu" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-ubuntu1-300x211.png" alt="PHP APC Ubuntu" width="300" height="211" /></a><strong>Ubuntu (Linux) Üzerinde APC Kurulumu:</strong> Ubuntu üzerinde APC kurmak için aşağıdaki komutu girmeniz yeterli.</p><p><code>sudo apt-get install php-apc</code></p><p>Daha sonra web sunucusunuzu (apache, nginx vb) restart edin.</p><p>Ubuntu için phpinfo() çıktısında bulunan APC alanı yandaki resim gibi olacaktır.</p><h3 class="clear">APC &#8216;nin Önemli Ayarları</h3><p>APC &#8216;yi ayarlamak için Windows üzerinde php.ini dosyasını, Ubuntu üzerinde (diğer Linux sürümlerinde benzer olabilir) <strong>/etc/php5/conf.d/apc.ini</strong> dosyasını kullanabilirsiniz.</p><p><strong>Bellek boyutu; </strong>APC &#8216;nin varsayılan ayarlarında genellikle 32MB bellek alanı direktifi ile gelir. Eğer kodlarınız bu boyutu aşıyorsa değiştirmeniz yada belleğe alınacak dosyaları filtrelemeniz öneriliyor. Örnek ayar aşağıdaki gibidir.</p><pre class="brush:perl">#apc.shm_size=32 #max 32mb bellek kullan (default/varsayilan)
apc.shm_size=256 #256 mb bellek kullan</pre><p><strong>Dosya değişiklik kontrolü;</strong> ayrıca bir başka önemli ayarda APC &#8216;nin dosyaların değişip değişmediğine bakıp cachelenen dosyaları güncellemesidir. Eğer dosyalarınız sık sık (dakika bazında) değişmiyorsa bu ayarı kapatmanız performansı daha da artıracaktır. Ancak unutulmaması gereken nokta apc.stat direktifini 0 &#8216;a ayarladığınızda APC &#8216;i temizlemediğiniz sürece dosyaları değiştirseniz bile bellek kopyasındaki halinin çalışacağıdır. Örnek ayar aşağıdaki gibidir.</p><pre class="brush:perl">#apc.stat=1 #dosya degistiginde bellegi guncelle (default/varsayilan)
apc.stat=0 #dosya degisikliklerini kontrol etme (daha iyi performans)</pre><h3>APC İzleme / Gözlemleme</h3><p>APC &#8216;yi ve bellekte bulunan dosyaların istatistiklerini izlemek için apc.php dosyası kurulumla birlikte gelir. Biz yinede bu dosyanın varsayılan halini paylaşıyoruz (<a href="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/apc.php_.zip">apc.php</a>). Bu dosya sayesinde bellek kullanım miktarı, belleğe alınan dosyaların aldığı hitler, kullanıcı tarafından eklenen (apc_add / apc_store) değişkenler gibi bir çok istatistiğe ulaşabilirsiniz.</p><p>Detaylı istatistiklere ulaşmak için apc.php dosyası içerisinde bulunan <code>defaults('ADMIN_PASSWORD','password');</code> satırını güncellemeniz gerekir. Aksi halde APC monitor kodu (şifre varsayılan olduğu için) size bu bilgileri vermez.</p><a href='http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600/php-apc-monitor-ubuntu' title='php-apc-monitor-ubuntu'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-monitor-ubuntu-150x150.png" class="attachment-thumbnail" alt="PHP APC Monitor on Ubuntu" title="php-apc-monitor-ubuntu" /></a> <a href='http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600/php-apc-monitor-system-entries-ubuntu' title='php-apc-monitor-system-entries-ubuntu'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-monitor-system-entries-ubuntu-150x150.png" class="attachment-thumbnail" alt="PHP APC Monitor System Cache Entries on Ubuntu" title="php-apc-monitor-system-entries-ubuntu" /></a> <a href='http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600/php-apc-monitor-user-entries-ubuntu' title='php-apc-monitor-user-entries-ubuntu'><img width="150" height="150" src="http://blog.mustafakirimli.com/wp-content/uploads/2012/03/php-apc-monitor-user-entries-ubuntu-150x150.png" class="attachment-thumbnail" alt="PHP APC Monitor User Cache Entries on Ubuntu" title="php-apc-monitor-user-entries-ubuntu" /></a><h3>APC &#8216;nin Memory Storage Özelliği</h3><p>APC &#8216;nin bir başka özelliğide değişken önbellekleme yapan memory storage &#8216;dir. Bu özellik sayesinde belleğe attığınız bir değişkeni daha sonra (örneğin başka bir dosyadan) çağırabilirsiniz. Kullanılması son derece basit bir özelliktir. Ancak bu değişkenlere sadece aynı sunucudan erişilebilir (Memcache ve Redis gibi uygulamalarda olduğu gibi başka sunuculardan erişilemez yada dağıtık yapı kurulamaz). Detaylı kullanım bilgisi için <a title="Alternative PHP Cache (APC) Key-Value Storage Özelliği" href="http://blog.mustafakirimli.com/alternative-php-cache-apc-key-value-storage-ozelligi/1615">Alternative PHP Cache (APC) Key-Value Storage Özelliği</a> başlıklı yazıyı inceleyebilirsiniz.</p><h3>APC Önbellek Boşaltma</h3><p>APC &#8216;nin belleğe aldığı tüm dosyaları ve <strong>apc_add</strong> /<strong> apc_store</strong> kullanılarak eklenmiş değişkenlerin tamamını silmek için apc monitörü veya <strong>apc_clear_cache</strong> fonksiyonunu kullanmanız gerekiyor. Fonksiyon ile silmek için örnek dosya aşağıdaki gibidir.</p><pre class="brush:php">&lt;?php
header('Content-Type: text/html; charset=utf-8');

// APC eklentisi yüklü mü
if( false == function_exists('apc_cache_info') ) {
  echo "APC eklentisi yüklü değil!&lt;br/&gt;\n";
  exit;
}

// APC opcode temizle.
if( apc_clear_cache() ){
  echo "APC opcode belleği temizlendi!&lt;br/&gt;\n";
}

// APC degisken bellegini temizle
if( apc_clear_cache('user') ){
  echo "APC degisken bellegi temizlendi!&lt;br/&gt;\n";
}
?&gt;</pre><p>APC monitör üzerinden silmek için; APC monitöre login olduktan sonra sağ üstte bulunan <strong>Clear opcode Cache</strong> linkine tıklayarak <strong>opcode cache</strong> belleğini,  &#8221;<strong>User Cache Entries</strong>&#8221; sayfasında iken &#8220;<strong>Clear user Cache</strong>&#8221; linkine tıklayarakta değişken belleğini temizleyebilirsiniz.</p><h3>Sonuç ?</h3><p>Yazımızı burada sonlandırırken konu hakkında detaylı bilgi yada kendi tecrübeleriniz için yazıya yorum bırakabileceğinizi hatırlatıyoruz.</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>PHP Hızlandırıcılar (PHP Accelerators)</title><link>http://blog.mustafakirimli.com/php-hizlandiricilar-php-accelerators/1601</link> <comments>http://blog.mustafakirimli.com/php-hizlandiricilar-php-accelerators/1601#comments</comments> <pubDate>Tue, 17 Apr 2012 07:00:49 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[php accelerators]]></category> <category><![CDATA[php hızlandırıcılar]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1601</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda PHP]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda PHP projelerimizi hızlandırmada önemli bir rol oynayan PHP hızlandırıcıları (PHP Accelerators) inceleyeceğiz.</p><p><span id="more-1601"></span></p><p>Normal bir sitenin herhangi bir sayfasına istek yaptığınızda include edilen ve çalıştırılan yüzlerce .php dosyası olur. Ve bu dosyaların toplam boyutu bazen 10&#8242;larca bazende 100&#8242;lerce mb olabilir. Siteniz yüksek trafik alıyorsa (çok daha fazla sayfa göstermi olacağından) sunucu kaynaklarını verimli kullanmak adına opcode caching yapan PHP hızlandırıcılarını kullanma zamanı gelmiş olabilir.</p><h3>PHP Hızlandırıcı Nedir ?</h3><p>PHP hızlandırıcısı sadece kendinize ait bilgisayar / sunucunuza kurulabilen, düşük maliyetli, hızlı implemente edilebilir ve  (şimdilik) eklenti olmasına rağmen oldukça stabil çalışan PHP eklentisidir.</p><p>Ayrıca PHP hızlandırıcıları Memcache, Redis gibi sunucularının memory caching/key-value memory storage işlerinide (dağıtık yapıda çalışma vb. özelliklerini desteklememekle beraber) yapabilir.</p><h3>PHP Hızlandırıcı Nasıl Çalışır ?</h3><p>PHP hızlandırıclarını iki ayaktan oluşan bir yapı olarak düşündüğümüzde; ilk ayağı PHP yorumlayıcısı ile depolama birimi (disk vs) arasında ikinci ayağını ise php yorumlayıcısı ile işletim sistemi arasında çalışan bir program olarak nitelendirebiliriz.  Bu hızlandırıcılar derlenip çalıştırılan PHP dosyalarını (<span style="color: #ff0000;">çıktılarını değil</span>) bellekte opcode (wiki: <a href="http://en.wikipedia.org/wiki/Opcode">en</a>) olarak tutar. Bir sonraki çalıştırmada ise <strong>okuma, ayrıştırma (parsing) ve derleme işlemlerini atlayarak</strong> kodun direkt çalıştırılmasını sağlar.</p><p>PHP hızlandırıcılarının dosya çıktısını değil betikleri belleğe aldığına örnek olarak;  bir PHP dosyası rastgele bir değer üretiyorsa APC &#8216;den çalıştığında da rastgele değer üretir. Bunu hızlandırıcıları incelerken örneklerle ele alacağız.</p><p>PHP yorumlayıcısı tarafından işlenen dosyaları bellekte tutmakla birlikte dosyanın değişmesi / silinmesi halinde bellekte bulunan kopyasını günceller. Dolayısıyla sizin ayrıca bellekte bulunan dosyaları yönetmenize gerek kalmaz.</p><h3>PHP Hızlandırıcının Avantajları ?</h3><p>PHP dosyalarının (kodlarının) her çalıştırılmada tekrar tekrar okunması, ayrıştırılması, derlenip opcode &#8216;a çevrilmesini engellediği için kodların çalıştırılma sürelerini gözle görülür derecede düşürür. Ayrıca derlenmiş kodu bellek (ram) üzerinde tuttuğundan disk okumalarını (i/o) azaltarak performans kazandırır.</p><h3>Kullanım İçin Gereksinim / Sınırlandırmalar Nelerdir ?</h3><p>PHP hızlandırıcıları kullanmak için yazının giriş bölümünde de bahsettiğimiz gibi paylaşımsız bir sunucuya (dedicated server) ihtiyaç vardır. Yani paylaşımlı hosting üzerinde PHP hızlandırıcı kullanmanız neredeyse imkansızdır. Tabi ki kendi bilgisayarınızda rahatlıkta kurup kullanabilirsiniz.</p><p>Ayrıca her hızlandırıcının istediği minimum PHP versiyonu olacaktır. Bunları ilerleyen yazılarda inceleyeceğiz. Bunun dışında derlenmiş PHP dosyalarının tutulacağı PHP dosyalarınızın boyutlarıyla oranlı bellek alanı gerekecektir.</p><h3>PHP Hızlandırıcıları Koda Nasıl Entegre Edilir ?</h3><p>Opcode caching için PHP hızlandırıcılarını sunucuya kurup aktif ettikten sonra koda entegre etmek için hiçbir değişiklik yapmanıza gerek yoktur.</p><h3>Yaygın Kullanılan PHP Hızlandırıcıları</h3><p>Yaygın olarak kullanılan PHP hızlandırıcıları (sırasız olarak) şunlardır;</p><ul><li>APC (Alternative PHP Cache)</li><li>eAccelerator - <strong>proje devam etmiyor</strong></li><li>ionCube PHP Accelerator - <strong>proje devam etmiyor</strong></li><li>XCache</li><li>Zend Optimizer+</li></ul><h3>Sonuç</h3><p><a title="Alternative PHP Cache (APC) Kurulum ve Kullanımı " href="http://blog.mustafakirimli.com/alternative-php-cache-apc-kurulum-ve-kullanimi/1600">Alternative PHP Cache (APC) Kurulum ve Kullanımı</a>, <a title="XCache Kurulum ve Kullanımı" href="http://blog.mustafakirimli.com/xcache-kurulum-ve-kullanimi/1638">XCache Kurulum ve Kullanımı</a> ve <a title="Zend Optimizer+ Kurulum ve Kullanımı" href="http://blog.mustafakirimli.com/zend-optimizer-kurulum-ve-kullanimi/1620">Zend Optimizer+ Kurulum ve Kullanımı</a> başlıklı yazılarımızda görüşmek üzere bol optimizasyonlu günler diliyoruz.</p><h3>Kaynaklar</h3><p><a href="http://en.wikipedia.org/wiki/PHP_accelerator">PHP Accelerator</a> &#8211; Wikipedia</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/php-hizlandiricilar-php-accelerators/1601/feed</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>PHP ile WS-Security SOAP Servislerine Bağlanmak</title><link>http://blog.mustafakirimli.com/php-ile-ws-security-soap-servislerine-baglanmak/1581</link> <comments>http://blog.mustafakirimli.com/php-ile-ws-security-soap-servislerine-baglanmak/1581#comments</comments> <pubDate>Mon, 16 Jan 2012 06:00:23 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[php soap]]></category> <category><![CDATA[php soap client]]></category> <category><![CDATA[ws-security]]></category> <category><![CDATA[WSS]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1581</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda WS-Security]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda WS-Security konusunu ele alacak ve PHP ile  <strong>WS-Security kullanan SOAP web servislerine</strong> nasıl bağlanabileceğimizi inceleyeceğiz.</p><p><span id="more-1581"></span>PHP halihazırda <strong>WS-Security tabanlı web servisi oluşturmayı</strong> desteklemesede WS-Security tabanlı servislere bağlanmak mümkün. WS-Security tabanlı bir web servisine bağlanmak için PHP &#8216;nin yerleşik olan <strong>SoapClient</strong> sınıfını kullanmak yeterli.</p><h3 class="clear">WS-Security (WSS) Nedir ?</h3><p>WS-Security, <a href="http://en.wikipedia.org/wiki/OASIS_(organization)">OASIS (Organization for the Advancement of Structured Information Standards)</a> tarafından geliştirilmiş ve web servislerine güvenlik özellikleri ekleyen bir standarttır. Her ne kadar performans kaybı yaşatıyor olsada kullanmak zorunda olduğunuzda bu kodlar işinize yarayabilir.</p><h3>PHP ile WS-Security (WSS) SOAP Servisine Nasıl Bağlanılır ?</h3><pre class="brush:php">&lt;?php

// wsdl cache 'ini devre disi birak
ini_set("soap.wsdl_cache_enabled", "0");

try {

  // SOAP parametreleri
  $soapOptions = array('login' =&gt; "username",
                        'password'     =&gt; "password",
                        'soap_version' =&gt; SOAP_1_2
                        );
// SOAPClient nesnesi olustur
$client = new SoapClient("adress", $soapOptions);

} catch (Exception $exc) { // Hata olusursa yakala
  echo "Soap Hatasi Olustu: " . $exc-&gt;getMessage();
}
?&gt;</pre><p>Yukarıda bulunan &#8220;<strong>username</strong>&#8221; ve &#8220;<strong>password</strong>&#8221; alanlarıda ws-security tabanlı web servisine login olurken kullanacağınız kullanıcı adı ve şifresini yazmanız gerekiyor. Sonrasında diğer metodları <a title="PHP İle SOAP Server ‘a Bağlanmak (SOAP Client)" href="http://blog.mustafakirimli.com/php-ile-soap-server-a-baglanmak-soap-client/469">PHP ile Web Servislerine Bağlanmak</a> yazısında olduğu gibi çağırabilirsiniz.</p><h3>Sonuç:</h3><p>Yazımızın sonunda lazım olduğunda günlerce araştırıp bulduğumuz bu küçük bilgilerin işinize yarayacağını temenni ediyoruz.</p><h3>Kaynaklar:</h3><p><a href="http://en.wikipedia.org/wiki/WS-Security">WS-Security &#8211; Wiki</a><br /> <a href="http://www.cs.ucsb.edu/~bultan/courses/595-W06/WS-Security.ppt">WS-Security (.ppt) &#8211; UCSB</a><br /> <a href="http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-SOAPMessageSecurity.pdf">WS-Security 1.1 Spec (.pdf) &#8211; OASIS</a><br /> <a href="http://msdn.microsoft.com/en-us/library/ms977327.aspx">Understanding WS-Security &#8211; MSDN</a><br /> <a href="http://blog.searyblog.com/blog/_archives/2008/9/3/3867340.html">Why use WS-Security &#8211; Chris Seary&#8217;s blog</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/php-ile-ws-security-soap-servislerine-baglanmak/1581/feed</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Array Diff ile Array Elemanlarını Filtreleme</title><link>http://blog.mustafakirimli.com/array-diff-ile-array-elemanlarini-filtreleme/1584</link> <comments>http://blog.mustafakirimli.com/array-diff-ile-array-elemanlarini-filtreleme/1584#comments</comments> <pubDate>Mon, 09 Jan 2012 06:00:29 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[array filtreleme]]></category> <category><![CDATA[array_diff]]></category> <category><![CDATA[array_diff_key]]></category> <category><![CDATA[dizi filtreleme]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1584</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda bir]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda bir array içerisinde istemediğimiz elemanları (boş olanlar vb) <strong>array_diff</strong> ile kolayca nasıl temizleyebileceğimizi (filtreleyebileceğimizi) inceleyeceğiz.</p><p><span id="more-1584"></span>Kullanacağımız yöntemle önce array elemanları üzerinde işlem yapacağız. Daha sonra array anahtarları üzerinde işlem yapmayı göreceğiz.</p><h3 class="clear">array_diff ile Boş Elemanları Temizleme:</h3><p><strong>$arr1</strong> arrayimizi boş bir array ile <strong>array_diff</strong> kullanarak karşılaştırıyoruz. array_diff bize boş değerli olmayan elemanların bulunduğu yeni bir array döndürüyor.</p><pre class="brush:php">&lt;?php

$arr1 = array("isim"    =&gt; "Ahmet",
              "soyisim" =&gt; "AY",
              "adres"   =&gt; "");

$newArr = array_diff($arr1, array(""));

print_r($newArr);
?&gt;</pre><p>Çıktısı :</p><pre class="brush:php">Array
(
    [isim] =&gt; Ahmet
    [soyisim] =&gt; AY
)</pre><h3>array_diff_key ile Boş Anahtarlı Arrayleri Temizleme:</h3><p>Yine<strong> $arr1</strong> arrayimizi anahtarıda boş bir array ile <strong>array_diff_key</strong> kullanarak karşılaştırıyoruz. array_diff_key bize anahtarı boş olmayan elemanların bulunduğu yeni bir array döndürüyor.</p><pre class="brush:php">&lt;?php

$arr1 = array("isim"    =&gt; "Ahmet",
              "soyisim" =&gt; "AY",
              "adres"   =&gt; "",
              ""        =&gt; "ekstra bilgi");

$newArr = array_diff_key($arr1, array("" =&gt; ""));

print_r($newArr);
?&gt;</pre><p>Çıktısı :</p><pre class="brush:php">Array
(
    [isim] =&gt; Ahmet
    [soyisim] =&gt; AY
    [adres] =&gt;
)</pre><h3>Sonuç:</h3><p>Sonuç olarak <strong>array_diff</strong> kullanarak birçok işlevi yerine getirebiliriz. <strong>array_diff</strong> &#8216;in değerler üzerinde, <strong>array_diff_key</strong> &#8216;in ise anahtarlar üzerinde işlem yaptığını unutmayalım.</p><p>Herkese İyi Çalışmalar</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/array-diff-ile-array-elemanlarini-filtreleme/1584/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Array Elemanlarını Başka bir Array İçerisinde Aramak</title><link>http://blog.mustafakirimli.com/array-elemanlarini-baska-bir-array-icerisinde-aramak/1574</link> <comments>http://blog.mustafakirimli.com/array-elemanlarini-baska-bir-array-icerisinde-aramak/1574#comments</comments> <pubDate>Sat, 31 Dec 2011 13:00:27 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[array search]]></category> <category><![CDATA[array_diff]]></category> <category><![CDATA[array_intersect]]></category> <category><![CDATA[dizide arama yapma]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1574</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda bir]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda bir array  (dizi) &#8216;i diğer bir array içerisinde aramak için pratik bir yöntem olan <strong>array_diff</strong> ve <strong>array_intersect</strong> &#8216;i inceleceğiz.<br /> <span id="more-1574"></span><br /> Kullanacağımız yöntemle bir array elemanlarının diğer bir array içerisinde geçip geçmediğini kontrol edeceğiz. Diğer bir deyişle arraylerin kesişimini kontrol edeceğiz.</p><h3>array_diff Kullanımı:</h3><p>array_diff kullanarak iki dizinin farkını alıyoruz. Eğer sonuç kümesi ilk dizimize eşit değilse ortak eleman var demektir.</p><pre class="brush:php">&lt;?php

$arr1 = array("10", "20", "30", "40");
$arr2 = array("15", "25", "30", "35", "45");

if( array_diff($arr1, $arr2) != $arr1){
  echo "\$arr1 dizisi içerisinde bulunan değerlerin bazıları "
      ."\$arr2  dizisinde de bulunuyor&lt;br/&gt;\n";
}else{
  echo "İki dizinin ortak elemanı yok!&lt;br/&gt;\n";
}

?&gt;</pre><h3>array_intersect Kullanımı:</h3><p>array_intersect kullanarak iki dizinin ortak elemanlarını kontrol ediyoruz. Eğer ortak eleman sayısı 0 dan büyükse ortak eleman var demektir.</p><pre class="brush:php">&lt;?php

$arr1 = array("10", "20", "30", "40");
$arr2 = array("15", "25", "30", "35", "45");

if( count(array_intersect($arr1, $arr2)) &gt; 0 ){
  echo "\$arr1 dizisi içerisinde bulunan değerlerin bazıları "
      ."\$arr2  dizisinde de bulunuyor&lt;br/&gt;\n";
}else{
  echo "İki dizinin ortak elemanı yok!&lt;br/&gt;\n";
}
?&gt;</pre><h3>Sonuç:</h3><p>Sonuç olarak <strong>array_diff</strong> ve <strong>array_intersect</strong> kullanarak birçok ihtiyacımıza çözüm üretebiliriz. Uzun yazıların okunmaması hasebiyle bu yazımıza olabildiğince az yorum katarak burada sonlandırmak istiyoruz.</p><p>Yeni yılda istemediğiniz hiçbir şeyle ortak elemanınız olmaması temennisiyle, <strong>Mutlu Yıllar!</strong></p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/array-elemanlarini-baska-bir-array-icerisinde-aramak/1574/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>PHP ile MySQL HandlerSocket &#8216;e Bağlanmak</title><link>http://blog.mustafakirimli.com/php-ile-mysql-handlersocket-e-baglanmak/1549</link> <comments>http://blog.mustafakirimli.com/php-ile-mysql-handlersocket-e-baglanmak/1549#comments</comments> <pubDate>Tue, 16 Aug 2011 05:58:53 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[HandlerSocket Kullanımı]]></category> <category><![CDATA[HandlerSocket örnek]]></category> <category><![CDATA[MySQL HandlerSocket]]></category> <category><![CDATA[PHP HandlerSocket]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1549</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda PHP]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda PHP ile MySQL HandlerSocket &#8216;e bağlanmayı ve kullanmayı deneyeceğiz.<br /> <span id="more-1549"></span><br /> Yazıya başlamadan önce MySQL HandlerSocket ile alakalı <a title="MySQL vs Memcache vs HandlerSocket MySQL" href="http://blog.mustafakirimli.com/mysql-vs-memcache-vs-handlersocket-mysql/1544">MySQL HandlerSocket tanıtımı</a>, <a href="http://blog.mustafakirimli.com/mysql-handlersocket-plugin-kurulumu/1553">MySQL HandlerSocket kurulumu</a> ve <a href="http://blog.mustafakirimli.com/mysql-handlersocket-plugin-icin-php-client-kurulumu/1548">PHP için MySQL HandlerSocket Client Kurulumu</a> yazılarını incelemek isteyebilirsiniz.</p><h3 class="clear">HandlerSocket Sınıfını Yakından Tanıyalım</h3><p>HandlerSocket sınıfı PHP-Handlersocket paketiyle gelmektedir. Bu paketin kurulumunu yukarıda linki bulunan &#8220;PHP için MySQL HandlerSocket Client Kurulumu&#8221; yazısında yapmıştık. Şimdi PHP &#8216;nin <a href="http://php.net/get_class_methods">get_class_methods</a> fonksiyonu ile HandlerSocket sınıfının metodlarına bakalım.</p><pre class="brush:php">&lt;?php

// HandlerSocket sınıfının tüm metodlarını getir
$methods = get_class_methods("HandlerSocket");

echo "&lt;pre&gt;";
print_r($methods);
echo "&lt;/pre&gt;";
?&gt;</pre><p><em>Yukarıdaki kodun çıktısı:</em></p><pre class="brush:php">Array
(
    [0] =&gt; __construct
    [1] =&gt; __destruct
    [2] =&gt; openIndex
    [3] =&gt; executeSingle
    [4] =&gt; executeMulti
    [5] =&gt; executeUpdate
    [6] =&gt; executeDelete
    [7] =&gt; executeInsert
    [8] =&gt; getError
    [9] =&gt; executeFind
)</pre><p>Ayrıca <a href="http://code.google.com/p/php-handlersocket/#Class_synopsis">PHP-Handlersocket</a> sayfasında bulunan HandlerSocket metod imzalarını incelemek isteyebilirsiniz.</p><p><em>HandlerSocket sınıfının metod imzaları:</em></p><pre class="brush:php">HandlerSocket {
    /* Constants */
    const HandlerSocket::PRIMARY;

    /* Methods */
    __construct  ( string $host, string $port [, array $options ])
    public bool openIndex ( int $id, string $db, string $table, string $index, string $fields )
    public mixed executeSingle ( int $id, string $op, array $fields [, int $limit, int $skip, strint $modop, array $values, array $filters, int $invalues_key, array $invalues ] )
    public mixed executeMulti ( array $requests )
    public mixed executeUpdate ( int $id, string $op, array $fields, array $values [, int $limit, int $skip, array $filters, int $invalues_key, array $invalues] ] )
    public mixed executeDelete ( int $id, string $op, array $fields [, int $limit, int $skip, array $filters, int $invalues_key, array $invalues] ] )
    public mixed executeInsert ( int $id, array $values )
    public string getError ( void )
}</pre><h3>Test Verilerinin Oluşturulması</h3><p>Sonraki HandlerSocket yazılarımızda da kullanacağımız veritabanı tablomuzu aşağıdaki komutla oluşturabilirsiniz. Biraz fazla detaylı bulabilirsiniz ancak birlikte indeksli alanlara değineceğimizden member tablosu buna güzel bir örnek oluşturacağını düşündük.</p><pre class="brush:sql">SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

SHOW WARNINGS;
SHOW WARNINGS;
CREATE SCHEMA IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
SHOW WARNINGS;
USE `test` ;

-- -----------------------------------------------------
-- Table `test`.`mem`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `test`.`mem` ;

SHOW WARNINGS;
CREATE  TABLE IF NOT EXISTS `test`.`mem` (
  `mem_id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'member id' ,
  `mem_name` VARCHAR(45) NULL COMMENT 'member name' ,
  `mem_last_name` VARCHAR(60) NULL COMMENT 'member last name' ,
  `mem_email` VARCHAR(90) NULL COMMENT 'member email address' ,
  `mem_username` CHAR(16) NOT NULL COMMENT 'member username' ,
  `mem_password` CHAR(40) NOT NULL COMMENT 'member password' ,
  `mem_type` ENUM('USER', 'MOD', 'ADMIN') NOT NULL DEFAULT 'USER' COMMENT 'member type' ,
  `mem_activation_key` VARCHAR(45) NULL DEFAULT NULL COMMENT 'member activation key' ,
  `mem_reset_key` VARCHAR(45) NULL DEFAULT NULL COMMENT 'member reset password key' ,
  `mem_last_login` DATETIME NULL DEFAULT NULL COMMENT 'member last login time' ,
  `mem_status` ENUM('ACTIVE', 'DEACTIVE', 'WAITING') NOT NULL DEFAULT 'WAITING' COMMENT 'member status' ,
  `mem_reg_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'member register time' ,
  PRIMARY KEY (`mem_id`) )
ENGINE = InnoDB
COMMENT = 'Member (staff) informations';

SHOW WARNINGS;
CREATE UNIQUE INDEX `mem_email_ukey` ON `test`.`mem` (`mem_email` ASC) ;

SHOW WARNINGS;
CREATE UNIQUE INDEX `mem_username_ukey` ON `test`.`mem` (`mem_username` ASC) ;

SHOW WARNINGS;
CREATE INDEX `mem_status_idx` ON `test`.`mem` (`mem_status` ASC) ;

SHOW WARNINGS;
CREATE INDEX `mem_type_idx` ON `test`.`mem` (`mem_type` ASC) ;

SHOW WARNINGS;
CREATE INDEX `mem_username_password_idx` ON `test`.`mem` (`mem_username` ASC, `mem_password` ASC) ;

SHOW WARNINGS;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

-- -----------------------------------------------------
-- Data for table `test`.`mem`
-- -----------------------------------------------------
SET AUTOCOMMIT=0;
USE `test`;
INSERT INTO `test`.`mem` (`mem_id`, `mem_name`, `mem_last_name`, `mem_email`, `mem_username`, `mem_password`, `mem_type`, `mem_activation_key`, `mem_reset_key`, `mem_last_login`, `mem_status`, `mem_reg_time`) VALUES
(NULL, 'Mustafa', 'KIRIMLI', 'info@mustafakirimli.com', 'kirimlimustafa', SHA1('rootTest@1'), 'USER', 'a9e56bb2f8ea7a719ec7b07ebb21f3bd', NULL, NULL, 'WAITING', NOW());

COMMIT;</pre><h3>PHP-HandlerSocket Kullanımı</h3><p>HandlerSocket sınıfı ile MySQL HandlerSocket &#8216;e bağlanmak için sınıf yapılandırıcısına (__construct) sunucu adres ve portunu verdikten sonra openIndex metodunu kullanmamız gerekiyor. Öncelikle basit bir kod yazıp sonrasında bu örnek üzerinden anlatım ve incelemeye devam edelim.</p><pre class="brush:php">&lt;?php
// Karakter setini utf-8 yap
header('Content-type: text/html; charset=utf-8');

$host    = '127.0.0.1';
$port_rd = 9998;
$port_wr = 9999;
$dbname  = 'test';
$table   = 'mem';

// HandlerSocket nesnesi olustur (HandlerSocket 'e bağlanır)
$hs = new HandlerSocket($host, $port_rd);

// Tablo indeksini ac, hata varsa ekrana bas ve betigi durdur
if (!($hs-&gt;openIndex(1, $dbname, $table, 'PRIMARY', 'mem_name,mem_last_name,mem_username,mem_email'))) {
    echo 'Index açılamadı! ' . $hs-&gt;getError() . PHP_EOL;
    die();
}

// Tablodan veri oku. Id 'si 1 olan satiri getir
$retval = $hs-&gt;executeSingle(1, '=', array("1"), 1, 0);

// Veriyi ekrana bas
echo '&lt;pre&gt;';
print_r($retval);
echo '&lt;/pre&gt;';
?&gt;</pre><p><em>Yukarıdaki Betiğin Çıktısı</em></p><pre class="brush:plain">Array
(
    [0] =&gt; Array
        (
            [0] =&gt; Mustafa
            [1] =&gt; KIRIMLI
            [2] =&gt; kirimlimustafa
            [3] =&gt; info@mustafakirimli.com
        )

)</pre><p>HandlerSocket &#8216;in openIndex metoduna bağlantı id &#8216;si gibi kullanılan int tipinde ilk parametre, ikinci parametre olarak veritabanı adı, üçüncü parametre tablo adı, dördüncü parametrede tablodaki indeksin adı (sütun adı değil) ve beşinci parametre olarak seçmek istediğiniz sütun adları (SQL de <strong>SELECT ile sütun seçmek</strong> gibi).</p><p>openIndex &#8216;in üretebileceği hatalar <strong>2:idxnum</strong> gibi bir formatla geliyor. Mesela bu hata indeks adı yanlış yazıldığında dönüyor. İlgilenenler ve C++ bilenler için MySQL HandlerSocket plugininin kaynak kodlarında hata mesajını grep (wiki:<a href="http://en.wikipedia.org/wiki/Grep">en</a>) yaparak bulduğumuz <a href="https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/handlersocket/database.cpp">bu</a> dosya işe yarayabilir.</p><h3>HandlerSocket executeSingle Metodu Hakkında</h3><p>Ayrıca dikkat edilmesi gereken başka bir konu executeSingle metodundan dönen sonuç dizisidir. Dönen kayıt sayısına bağlı olarak boyutu değişen dizi içerisinde seçtiğiniz sütun adları yerine sütun sıra idleri ile (<strong>openIndex metodunda yazılan sıra ile</strong>) dönen değerler mevcut. Bu özellik PHP &#8216;nin <a href="http://www.php.net/manual/en/function.mysql-fetch-row.php">mysql_fetch_row</a> fonksiyonuna çok benziyor.</p><h3>Sonuç</h3><p>executeSingle ve diğer metodların kullanımı ve SQL ile performans karşılaştırmalarına sonraki yazılarımızda değineceğiz.</p><p>Ayrıca yazımız sırasında kullandığımız dosyaları <a href="http://blog.mustafakirimli.com/wp-content/uploads/2011/08/PHP-HandlerSocket.zip">buradan indirebilirsiniz</a>.</p><p>İyi Çalışmalar.</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/php-ile-mysql-handlersocket-e-baglanmak/1549/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>MySQL HandlerSocket Plugin için PHP Client Kurulumu</title><link>http://blog.mustafakirimli.com/mysql-handlersocket-plugin-icin-php-client-kurulumu/1548</link> <comments>http://blog.mustafakirimli.com/mysql-handlersocket-plugin-icin-php-client-kurulumu/1548#comments</comments> <pubDate>Tue, 09 Aug 2011 05:58:39 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[HandlerSocket PHP client]]></category> <category><![CDATA[HSPHP]]></category> <category><![CDATA[kurulum]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[MySQL HandlerSocket]]></category> <category><![CDATA[MySQL HandlerSocket PHP]]></category> <category><![CDATA[NET_HandlerSocket]]></category><guid isPermaLink="false">http://blog.mustafakirimli.com/?p=1548</guid> <description><![CDATA[Merhaba arkadaşlar, bu yazımızda MySQL]]></description> <content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımızda MySQL HandlerSocket için PHP client kurulumunu yapacağız.<br /> <span id="more-1548"></span><br /> Yazıya başlamadan önce MySQL HandlerSocket ile alakalı <a title="MySQL vs Memcache vs HandlerSocket MySQL" href="http://blog.mustafakirimli.com/mysql-vs-memcache-vs-handlersocket-mysql/1544">MySQL HandlerSocket tanıtımı</a> ve <a href="http://blog.mustafakirimli.com/mysql-handlersocket-plugin-kurulumu/1553">MySQL HandlerSocket kurulumu</a> yazılarını incelemek isteyebilirsiniz.</p><h3 class="clear">PHP ile MySQL HandlerSocket &#8216;e Bağlanmak için Hangi Paketler Mevcut ?</h3><p>PHP ile MySQL HandlerSocket &#8216;e bağlanmak için 3 tane alternatif paket kullanabilirsiniz. Bunlar;</p><ul><li><a href="http://code.google.com/p/php-handlersocket/">PHP-Handlersocket</a></li><li><a href="https://github.com/tz-lom/HSPHP">HSPHP</a></li><li><a href="http://openpear.org/package/Net_HandlerSocket">NET_HandlerSocket</a></li></ul><div>Biz bu paketler arasından PHP-Handlersocket &#8216;i kullanacağız. Kurulum sırasında PHP 5.3.5-1ubuntu7.2, Apache/2.2.17 (Ubuntu) ve işletim sistemi olarak Ubuntu 11.04 kullanıyoruz.</div><h3>PHP-Handlersocket Kurulumu</h3><p><a href="http://code.google.com/p/php-handlersocket/">PHP-Handlersocket</a> eklenti sayfasından <a href="http://code.google.com/p/php-handlersocket/downloads/detail?name=php-handlersocket-0.1.0.tar.gz&amp;can=2&amp;q=">php-handlersocket-0.1.0.tar.gz</a> dosyasını indiryoruz. 0.1 versiyonunu seçme nedemiz <a href="http://blog.mustafakirimli.com/mysql-handlersocket-plugin-kurulumu/1553">bir önceki yazıda</a> kurduğumuz <strong>libhsclient</strong> ile uyumlu olması.</p><p>Şimdi indirdiğimiz bu dosyayı arşivden çıkarıp oluşan klasörün içine giriyoruz. Bunun için öncelikle bir terminal penceresi açalım ve aşağıdaki komutları yazalım. $ işaretlerinin kullanıcıyı temsil ettiğini bilen arkadaşlarımızı tenzih ederek $ kısmını komut satırına yazmamanız gerektiğini hatırlatıyoruz.</p><pre class="brush:shell">$ cd
$ cd Downloads/
$ tar xvf php-handlersocket-0.1.0.tar.gz
$ cd php-handlersocket/</pre><p>Bu dosya yolları bizim kurulumumuz için geçerli. Dosyayı farklı bir dizine indirdiyseniz kendi dosya yolunuzu vermeniz gerekiyor. Komutları inceleyecek olursak; ilk satır ev dizinimize girer (home), ikinci satır Downloads klasörünün içine girer, üçüncü satır ise biraz önce indirdiğimiz dosyayı arşivden çıkarır ve son satır ise oluşan klasörün içine girer.</p><p>PHP-Handlersocket &#8216;i derleyerek kurmak için aşağıdaki komutları yazacağız:</p><pre class="brush:shell">$ phpize
$ ./configure
$ make
# make install</pre><p>Yukarıdaki komutlarda PHP için MySQL HandlerSocket client kurulumu tamamlanmış oluyor. Derleme komutlarının son satırında bulunan # işareti komutun root kullanıcısı ile çalıştırıması gerektiğini belirtiyor. Eğer isterseniz &#8220;<strong>sudo make install</strong>&#8221; olarakta çalıştırabilirsiniz.</p><h3>PHP-Handlersocket Eklentisini Aktif Etme</h3><p>PHP-Handlersocket eklentisini başarıyla kurduk şimdi sıra php.ini üzerinden eklentiyi aktif etmekte. Öncelikle php.ini dosyamızı yazabilecek şekilde (sudo ile) açıyoruz:</p><pre class="brush:shell">$ sudo gedit /etc/php5/apache2/php.ini</pre><p>Daha sonra <strong>&#8220;extension=handlersocket.so&#8221;</strong> komutunu dosyanın sonuna ekliyoruz ve kaydedip dosyayı kapatıyoruz.</p><p>PHP komut satırından HandlerSocket kullanabilmek için PHP CLI php.ini dosyasına da aynı ayaları uygulamak gerekiyor. Dosyayı aşağıdaki komutla açalım:</p><pre class="brush:shell">$ sudo gedit /etc/php5/cli/php.ini</pre><p>Yine dosyanın sonuna <strong>&#8220;extension=handlersocket.so&#8221;</strong> komutunu ekleyelim ve kaydedip kapatalım.</p><h3>PHP-Handlersocket Eklentisi Kurulum Testi</h3><p>Eğer PHP-Handlersocket eklentisini doğru bir şekilde kurduysanız PHP info çıktınızda  (aşağıdaki PHP kodu ile elde edilir) resimde görüldüğü gibi handlersocket bölümü olması gerekmektedir.</p><pre class="brush:php">&lt;?php

phpinfo();
?&gt;</pre><p><a href="http://blog.mustafakirimli.com/wp-content/uploads/2011/07/php-handlersocket-phpinfo.jpg"><img class="alignnone size-full wp-image-1565" title="php-handlersocket-phpinfo" src="http://blog.mustafakirimli.com/wp-content/uploads/2011/07/php-handlersocket-phpinfo.jpg" alt="php handlersocket phpinfo" width="612" height="262" /></a></p><p>Diğer bir kurulum doğrulama yöntemimiz ise PHP &#8216;nin <a href="http://php.net/class_exists">class_exists</a> fonksiyonu ile. Test için ayrıca php-handlersocket eklentisiyle gelen handlersocket.php dosyasınıda çalıştırabilirsiniz.</p><pre class="brush:php">&lt;?php

if ( class_exists("HandlerSocket") ){
  echo '&lt;p style="color:green;"&gt;HandlerSocket eklentisi mevcut!&lt;/p&gt;';
}else{
  echo '&lt;p style="color:red;"&gt;HandlerSocket eklentisi bulunamadı!&lt;/p&gt;';
}
?&gt;</pre><p>Bir sonraki yazımızda görüşmek üzere..</p> ]]></content:encoded> <wfw:commentRss>http://blog.mustafakirimli.com/mysql-handlersocket-plugin-icin-php-client-kurulumu/1548/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (Requested URI is rejected)
Database Caching 5/65 queries in 0.021 seconds using disk
Object Caching 1050/1205 objects using disk

Served from: blog.mustafakirimli.com @ 2012-05-21 02:50:42 -->
