eAccelerator ve control.php

irfaN | PHP, Symfony, İpuçları | Friday, December 18th, 2009

Burada anlattığım yöntem ve bash script ile eAccelerator kurmuşsanız scripti çalıştırdığınız dizinde eaccelerator-0.9.5.3 isminde bir klasör oluşacaktır.
Bu klasörün içerisinde bulacağınız control.php dosyası bize temel anlamda eAccelerator’ı yönetme imkanı veriyor.
Yazinin devami var..

WHM-cPanel Sunucularda Symfony İçin PHP ve eAccelerator

irfaN | Bash, PHP, Pear, Symfony, İpuçları | Sunday, December 13th, 2009

Var olan sisteminizin yükünü düşürmek istiyorsanız eAccelerator en iyi yöntem diyebilirim. eAccelerator derlenen PHP dosyalarını cache dizinde tutup, tekrar aynı dosyalara istek geldiğinde kodları yeniden derlemek yerine, bu dizindeki derlenmiş kodları httpd ye gönderir.

Yeni bir sisteme başlayacaksanız ve yeterli miktarda ram e ve server a para harcayabiliyorsanız memcached kullanılabilir. Memcached için özetle dağıtık önbellek sistemi diyebiliriz (Distributed Memory Caching System). Memcached’in diğer bir dezavantajı da işin yükünü programcıya bırakmasıdır. Memcached detaylı bir konu olduğu için (WordPress stats eklentisi bile var) daha sonraya bırakıp işimize dönelim.

PHP ile birlikte eAccelerator derlemek için bazı parametreler girmeniz gerekiyor. WHM/cPanel sunucularda bu imkanımız var gibi görünsede CentOS 5.4 üzerinde işe yaramıyor.

Yazinin devami var..

Pear Symfony Update

irfaN | PHP, Pear, Symfony, İpuçları | Sunday, December 13th, 2009

Symfony 1.2.8 kullanıyordum, güncellemek için pear uninstall symfony/symfony-1.2 ile kaldırdıktan sonra 1.4.1 i kurayım dedim.

1
2
3
4
$ pear channel-discover pear.symfony-project.com
Channel "pear.symfony-project.com" is already initialized
$ pear install symfony/symfony-1.4.1
Failed to download symfony/symfony, version "1.4.1", latest release is version 1.3.0BETA1, stability "beta", use "channel://pear.symfony-project.com/symfony-1.3.0BETA1" to install

Himm bir terslik var bu işte

Yazinin devami var..

MacOSX + MAMP + Symfony Development Ortamı Hazırlamak

irfaN | MySQL, PHP, Symfony, İpuçları | Monday, July 27th, 2009

Bir çok yerde benzeri kurulumlar anlatılıyor. Ben en basit şekilde, sisteminize dokunmadan kurulumu yazmaya çalışacam.

Bu sayfa hazırlanırken ki mevcut versionlar:
Mac OS X : 10.5.7
Mamp : 1.7.2 (ve içerisinde gelen php pear apache mysql versionları)
Symfony : 1.2.8

Yazinin devami var..

Php ucwords strtoupper strtolower kesin çözüm

irfaN | PHP | Friday, March 27th, 2009

PHP ile string işlemlerinde Türkçe karakter sorunu yaşanan üç fonksiyon “ucwords“,”strtoupper“,”strtolower” fonksiyonlarıdır.

Bu problemleri internette aşmaya çalışan bir çok sayfaya rastladım fakat hiç biri kesin çözüm üretmiyor. Banada şimdiye kadar hiç ucwords lazım olmamıştı, strtoupper ve strtolower fonksiyonlarını zaten kullanıyordum. Aşağıdaki fonksiyon ile ucwords, strtoupper, strtolower türkçe karakter problemlerinize elveda diyebilirsiniz.

Yazinin devami var..

PHP 4′ün Yaşamına Son Veriliyor

irfaN | PHP | Thursday, July 19th, 2007

Mustag Ata hazırlıkları yüzünden gelişmelerden birazcık geri kalmışım. Geçen gün php.net‘de gördüğüm “PHP 4 end of life announcement” başlıklı haberle birlikte irkildim. 31 Aralık 2007 tarihinden itibaren PHP 4 geliştirilmeyecek. Kritik güncelleştirmeler için son tarih de 08 Ağustos 2007 olarak belirlenmiş. PHP geliştiricileri programlarımızı PHP 5 ile çalıştırmamızı tavsiye ediyor.

Haberin tam metni ise şöyle;

[13-Jul-2007] Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable & production-ready and as PHP 6 is on the way, PHP 4 will be discontinued.

The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5.

For documentation on migration for PHP 4 to PHP 5, we would like to point you to our migration guide. There is additional information available in the PHP 5.0 to PHP 5.1 and PHP 5.1 to PHP 5.2 migration guides as well.

MacOSX Tiger’da mysql_connect() Sorunsalı

irfaN | Apple, MySQL, PHP | Sunday, July 1st, 2007

Dün kurduğum phpMyAdmin‘den sonra config.php dosyamda bulunan

mysql_connect('localhost','root','PASSWORD') or die ("Veritabanı hatası. Hata mesajı :" .mysql_error());

satırımın çalışmadığının farkına vardım. Dosyayı çalıştırdığım zaman şöyle bir hata aldım :

Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock’ (2)

Bu sorun /etc/php.ini dosyasında mysql socket yolunun belirtilmediğinden veya yanlış belirtildiğinden kaynaklanıyor.
/Application/Utilities/Terminal programını çalıştırıyoruz,
$ sudo nano /etc/php.ini
komutunu verdikten sonra dosya içerisinde aramak için Ctrl + W tuş kombinasyonunu kullanıyoruz. Pencerenin hemen altında açılan satıra,
  mysql.default_socket
yazıp enter e basıyoruz. Satırımız bulunmuşsa ve = işaretinin karşısı boş ise hemen buraya

 /tmp/mysql.sock

yazıyoruz.
Satırımız bulunamamış ise

  [MySQL]

parafının altında herhangi bir yere

  mysql.default_socket = /tmp/mysql.sock

satırını ekliyoruz.
Fn+F2 veya Ctrl+X tuş kombinasyonlarından birini kullanarak dosyamızı kapatıyoruz. Kaydedeyim mi sorusuna ‘Y’ tuşu ile cevap veriyoruz.

Son olarak MySQL ve Apache‘yi yeniden başlatıyoruz.

Yeniden başlatmak için;
Elma menüsünden System Preferences‘i açıp, Other başlığı altındaki MySQL simgesine tıklıyoruz. Stop MySQL Server butonuna tıklayıp, root şifremizi giriyoruz. Bi kaç saniye bekleyip, MySQL sunucusunun durduğundan emin olduktan sonra Start MySQL Server butonuna tekrar tıklayıp MySQL sunucusunu başlatıyoruz.

Üst kısımdaki Show All butonuna tıklayarak ana menüye dönüyoruz. Sharing bölümünden Personel Web Sharing‘e de yukarıdaki gibi önce Stop, sonra Start ediyoruz. Bu sayede Apache Web Sunucumuz da durdurup, tekrar başlatmış oluyoruz.

Hepsi bu kadar -) Artık PHP mysql_connect() function’ımız tertemiz çalışıyor.

MacOSX Tiger’ı MySQL ve PhpMyAdmin için evcilleştirmek

irfaN | Apple, MySQL, PHP | Saturday, June 30th, 2007

Uzun süredir geliştirdiğim PHP+MySQL projeleri debian üzerinde ağdan test ediyordum. Evde küçük bir bilgisayarı kendi projeleriniz için SQL server yapmak gerçekten mantıklı bir iş. Kullandığınız bilgisayarınızın tüm işlemci gücü size kalır. Evden dışarı çıkınca PowerBook G4′ümde MySQL kurulu olmadığı için aksamalar oluyordu.

Geçtiğimiz günlerde MySQL kurmuştum. Birde Web tabanlı GUI (Graphical User Interface – Grafiksel Kullanıcı Arayüzü)’ye ihtiyacım var. Çok tercih edilen, özgür, php tabanlı PHP My Admin tam aradığım ve yıllardır kullandığım bir yazılım. Bugün de PhpMyAdmin kurulumu yaptım.

OSX Tiger kurulumlar sırasında beni pek üzmedi. Umarım sizide üzmez -)

MySQL Kurulumu :
Öncelikle MySQL’i bu adresden ediniyoruz. Saçma sapan detaylara girmeyeceğim. İndirdiğiniz dosyanın içerisindeki paketi sisteminize kurun.

Application > Utilites > Terminal programını açıyoruz ve
sudo nano /etc/profile
komutunu veriyoruz. /etc/profile dosyasının içerisi ‘nano’ metin editörü ile gösterilmeden hemen önce sizden ‘Sistem Yöneticisi Şifresi’ yani ‘root password’ isteyecektir. Şifrenizi girin ve Enter’a basın.

Daha sonra

  PATH="/bin:/sbin:/usr/bin:/usr/sbin"

satırını bulun ve başına # işareti koyun.
  # PATH="/bin:/sbin:/usr/bin:/usr/sbin"
şeklini alacaktır.

Kapattığımız satırın hemen altına

  PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/mysql/bin"

satırını ekliyoruz.
Kaydedip çıkmak için Fn + F2 veya Ctrl+X tuş kombinasyonlarından birini kullanabilirsiniz. Size kaydetmek isteyip istemediğinizi soracaktır, Y tuşuna basarakda kaydetmek istediğinizi onaylayın.

Son olarak terminalimizden

  mysql_secure_installation

komutunu veriyoruz.

Enter current password for root (enter for none):
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: hedehodo
Re-enter new password: hedehodo

MySQL root parolamızı yazmak için Y tuşuna basıyoruz arkasından iki kez root şifremizi yazıyoruz.

Password updated successfully!
Reloading privilege tables..
… Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y

Burada Y tuşuna basarak, misafir kullanıcının MySQL e erişimini kaldırıyoruz.

… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y

Y tuşuna basarak uzak root girişini kapatıyoruz.

… Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y

Yine Y tuşuna basarak test veritabanı ve yetkilerini kaldırıyoruz.

- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y

Y tuşuna basarak MySQL’in çalışması için gerekli tabloyu yeniden yüklüyoruz.

… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

MySQL kurulumumuz bu kadar. Şimdi bir test edelim bakalım, kurulumumuz doğru bir şekilde tamamlanmış mı.

  $ mysqladmin -u root -p status

komutunu verip arkasından şifremizi girdikten sonra, şuna benzer bir çıktı almamız gerekiyor.

Uptime: 6067 Threads: 1 Questions: 188 Slow queries: 0 Opens: 21 Flush tables: 1 Open tables: 15 Queries per second avg: 0.031

MySQL kurulumu bu kadar -) Şimdi yötecek araca ihtiyacımız var.

PhpMyAdmin Kurulumu

PhpMyAdmin kurulumu çok detaylı. Fazla detaya girmek istemiyorum. Bu yazının sonunda işinizi görecek bi tane config dosyası vereceğim -)

Öncelikle PhpMyAdmin‘i ediniyoruz. Daha sonra gelen sıkıştırılmış veya arşivlenmiş dosyayı açıyoruz. İçerisinden çıkan tüm dosyaları /Users/KULLANICI_ADI/Sites altına kopyalıyoruz. Sizin benim localhost adresim /Users/north/Sites olduğu için ben buraya kopyalıyorum. Siz özel bir değişiklik yapmadıysanız büyük ihtimalle sizin içinde burası doğru adres olacaktır.

Klasörümüzün ismini phpmyadmin olarak değiştirelim ki kolaylıkla ulaşabilelim. Kurulum sonrası http://localhost/~USER/phpmyadmin/ adresinden phpMyAdmin’e ulaşabileceğiz. (USER yerine sizin kullanıcı adınız.)

Kurulumu ana dizindeki config.sample.inc.php dosyasını el ile düzenledikten sonra config.inc.php adıyla kaydederek yapabileceğiniz gibi, kurulum scriptini de kullanabilirsiniz.
Kurulum Scriptini Kullanmak İstiyorsanız

Öncelikle ana dizinde yetkileri 777 olan config adında boş bir klasör oluşturun. Kurulum scriptimiz bu klasörü arayacaktır. Bulamazsa veya yetkileri doğru değilse kayıt yapamayacağı için yapacağınız tüm ayarlar boşa gidecektir. Kurulum betiğini (scriptini) çalıştırmak için http://localhost/~USER/phpmyadmin/scripts/setup.php dosyasını web tarayıcınızla açmanız yeterli olacaktır.
Aşağıdaki ekran görüntüsündeki gibi bir ekranla karşılaşacaksınız.
phpmyadmin-1

Buradan gerekli ayarları yaparak PhpMyAdmin’i kurabilirsiniz.

Son olarak;

Hazır config.inc.php dosyası (phpMYAdmin 2.10.2 sürümü için):

Aşağıdaki config dosyasında bi kaç ufak yeri değiştirerek kullanabilirsiniz. Değiştirmeniz gereken yerlerin yanlarında gerekli açıklamalar yazıyor.
Server portu, soketi gibi değiştirilebilir yerler var. MySQL kurulumunu yukarıda anlattığım gibi kurduysanız ve ‘ön tanımlı’ ayarları değiştirmediyseniz bu config dosyası işinizi görecektir.
<?php
  $i = 0;
  $i++;
  $cfg['Servers'][$i]['host'] = 'localhost';
  $cfg['Servers'][$i]['extension'] = 'mysql';
  $cfg['Servers'][$i]['port'] = '3306';
  $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
  $cfg['Servers'][$i]['connect_type'] = 'socket';
  $cfg['Servers'][$i]['compress'] = false;
  $cfg['Servers'][$i]['controluser'] = 'root';
  $cfg['Servers'][$i]['controlpass'] = 'PAROLA'; // PAROLA yazan yere kendi şifrenizi yazın.
  $cfg['Servers'][$i]['auth_type'] = 'config';
  $cfg['Servers'][$i]['user'] = 'root';
  $cfg['Servers'][$i]['password'] = 'PAROLA'; // PAROLA yazan yere kendi şifrenizi yazın.
  $cfg['Servers'][$i]['SignonURL'] = 'http://localhost/~USER/phpmyadmin/'; // USER yazan yerlere kendi kullanıcı adınızı yazın. phpMyAdmin'in konumu değişik ise tamamen kendi bilgisayarınıza göre konumu yazabilirsiniz.
  $cfg['Servers'][$i]['LogoutURL'] = 'http://localhost/~USER/phpmyadmin/'; // USER yazan yerlere kendi kullanıcı adınızı yazın. phpMyAdmin'in konumu değişik ise tamamen kendi bilgisayarınıza göre konumu yazabilirsiniz.
  $cfg['LeftFrameLight'] = true;
  $cfg['LeftFrameDBTree'] = true;
  $cfg['LeftFrameDBSeparator'] = '_';
  $cfg['LeftFrameTableSeparator'] = '__';
  $cfg['LeftFrameTableLevel'] = 1;
  $cfg['LeftDisplayLogo'] = true;
  $cfg['LeftDisplayServers'] = false;
  $cfg['DisplayServersList'] = false;
  $cfg['DisplayDatabasesList'] = false;
  $cfg['LeftPointerEnable'] = true;
?>

Bitti ! -)

PHP ile RSS yayını

irfaN | MySQL, PHP, İnternet | Wednesday, May 2nd, 2007

Bir çoğumuz resmini değişik sitelerde görmüşüzdür. Sağ taraftaki büyük “blog” yazısının hemen sağ alt köşesinde de bir tane bu logodan bulunuyor -) Dün akşam blog’um için RSS yayını kısmını da yazdım. Eh blog yüzde yüz “el” yapımı oldu. Yoksa “ev” yapımı mı desek -)

Wikipedia‘nın şu sayfasında RSS yi şöyle tanımlamış;

RSS, genellikle haber sağlayıcıları, bloglar ve podcastler tarafından kullanılan, yeni eklenen içeriğin kolaylıkla takip edilmesini sağlayan özel bir XML dosya formatıdır. Kullandığı dosya biçimleri .rss ve .xml’dir.

RSS kısaltmasının açılımı ve zaman içinde gelişimi şöyledir:

  • Rich Site Summary (RSS 0.91)

  • RDF Site Summary (RSS 0.9 and 1.0)
  • Really Simple Syndication (RSS 2.0.0)

İnternet kullanıcısı RSS teknolojisi ile düzenli olarak içerik sunan sitelere abone olabilir ve çeşitli RSS istemcileri sayesinde içeriği takip edebilir. Site yöneticisi veya sahibi bu hizmeti sunmak için bir takım teknik düzenlemeler yapmalı ve uygun formatta XML’i RSS istemcisi talep ettiğinde göndermelidir.

RSS’in ne olduğunu öğrendikten sonra RSS yayımcımızı yazalım. Yazacağımız RSS in bir özelliği olsun. Kullanıcı en son kaç girdiyi okuyacaksa bunu kendisi belirtebilsin. Yoksa standart olarak 10 adet girdiyi yayım yapsın.

1
2
3
4
5
6
7
8
9
10
<?php
if (empty($_GET["adet"]))
{
    $adet="10";
}
else
{
    $adet=$_GET["adet"];
}
$url="http://irfandurmus.com/index.php?id=";

$url değişkeni ile RSS istemcisinden ziyaretçi tıkladığı zaman gideceği sayfayı yazıyoruz. Daha sonra bu satırın sonuna okunacak yazının id numarasını dinamik olarak yazdıracağız.

Eğer RSS yayıncımıza kaç adet okunmak istendiği belirtilmezse, ($_GET[adet] değişkeni boş gelecek olursa) 10 adet yayım yapacak. Kullanıcı rss.php?adet=30 gibi bir istekde bulunursa RSS istemcimiz son 30 girdiyi yayımlayacak.

1
2
mysql_connect('localhost','USER','PASSWD') or die ("Veritabanına bağlanılamadı. Hata: " . mysql_error());
mysql_select_db("DB_NAME");

Veri tabanı bağlantımızı kurduk

1
2
$sqlRSS="SELECT * FROM table_name ORDER BY id DESC";
$okuRSS=mysql_query($sqlRSS);

MySQL veritabanımızdan gerekli satırları okuduk. Şimdi XML kodlarımızı yazmaya başlayalım.

1
2
echo "<?xml version="1.0" encoding="iso-8859-9"?>"
?>

XML ile PHP kodlarımız karışmasın diye echo ile yazdırdım. PHP tagımızı kapatıp burayı text olarak yazıyorum.

1
2
3
4
5
6
7
<rss version="2.0">
<channel>
    <title>irfaN's Blog</title>
    <link>http://www.irfandurmus.com/blog</link>
    <description>Web Developer and Photographer</description>
    <lastBuildDate>2 Mayıs 2007 20:47:12 +0200</lastBuildDate>
    <language>tr-TR</language>

Yazdığımız kısmı açıklayalım. <rss version> ile sürümümüzü belirtiyoruz. <channel> ile kanalımızı açıyoruz. <title> tagları arasına RSS yayını yaptığımız sitemizin başlığını yazıyoruz. <link> tagları arasına sitemizin adresini yazıyoruz. <description> tagları arasına sitemizin kısa açıklamasını yazıyoruz. <lastBuildDate> tagları arasına RSS dosyasının son güncelleme tarihini yazıyoruz. Bunu PHP’nin date() fonksiyonu ile otomatik yazabiliriz. <language> tagları arasında da kullandığımız dili belirtiyoruz. Tag içeriklerinin büyük küçük harf duyarlı olduğunu belirtemeden geçmeyelim. Gerçi büyük/küçük harf duyarlılığı PHP programcıları için tanıdıktır.

Döngümüzü kurup, verileri çekmeye başlamadan önce tablomuzda id, baslik, tarih, yazi, isimlerinde 4 tane alan olduğunu hatırlatıyım. Bu alanları kendinize göre değiştirmelisiniz.

Şimdi döngümüzü kuralım. verimizi çekmeye başlayalım.

1
2
3
4
5
<?php
        for ( $i=0; $i &lt; $adet; $i++ )
        {
        $satir=mysql_fetch_array($okuRSS);
    ?>

Döngümüzü kurduk, fakat kapatmadık. Şimdi döngü içerisinde yer alacak blog girdilerini, RSS’in anlayacağı dilde yazalım.

1
2
3
4
5
6
7
8
9
<item>
    <title><?php echo $satir["baslik"]; ?></title>
<link><?php echo $url . $satir["id"] ?></link>
<pubDate><?php echo $satir["tarih"]; ?></pubDate>
<description><![CDATA[<?php echo substr($satir["yazi"],0,350) . "[...]"; ?>]]></description>
</item>
    <?php
        }
    ?>

Tagı yeni bir içerik için kullanılıyor. Her göndereceğimiz içeriği <item> tagları arasında RSS okuyucularına gönderiyoruz. RSS istemcileri Bu içeriğin başlığını <title> tagındandan okuyorlar. <link> tagı ise tıklandığı zaman nereye gideceğini yazıyoruz. Daha önce tanımladığımız $url değişkeninin yanına okunacak yazı id sini yazdırıyoruz. <pubDate> ile yazının giriş tarihini yazıyoruz. Bunu da veritabanından çekmemiz en güzeli. <description> tagları arasına içeriğimizin ilk 350 karakterini açıklama olarak yazıyoruz. Veritabanımızda ayrı bir açıklama bölümü yer alıyorsa onu da buraya yazdırabiliriz. <item> tagını, sonrasında döngümüzü kapatarak işlemi bitiriyoruz.

Son işlem olarak kanalımızın ve RSS dosyamızın kapanış taglarını yazıyoruz.


Kodlardaki gerekli yerleri değiştirerek haber, blog, portal türü herhangi bir sitede RSS yayını yapabilirsiniz.

Cekirdek; WordPress | Gorsel; Roy Tanck | Ev Sponsoru - Hosting degil! bildigin ev - ; SnefeRu