Gökhan Özden Günlük/Blog

19 Ekim 2007

Veritabanından Bilgi Çekip WYSIWYG Editörlerde Yansıtırken Dikkat Edilmesi Gereken Nokta

Kategori: PHP — gokhanozden @ 10:39 pm

Merhabalar uzun süredir yazmıyorum fırsat bulamadım derslerden.

Şimdi sorun şu ben de bugün karşılaştım ve sorunu çözmek için birkaç saatimi harcadım. Eğer bir içerik yönetimi yapmayı planlıyorsanız siz de wysiwyg editörlere mutlaka başvurmuşsunuzdur. Ben 2 gündür uğraşmaktayım. Sorun şu:

Bir editörle attığınız bilgileri veritabanında bir ‘tb_content’ adlı tablo içerisindeki ‘content’ alanında olduğunu varsayalım. Ve bir WYSIWYG editör ile veritabanına veriyi gönderelim. Şimdi göndermede hiç bir sorun yok ancak gönderilen yapıyı mesela bir update.php sayfası üzerinden düzeltmek istiyoruz. Ancak o da ne düzgün yolladığımız sayfa bu sefer wysiwyg editörlerde açılmıyor.
Bunun nedenini bu yazıyı yazdığım yer de bir WYSIWYG editör olduğu için kodla gösteremiyorum ama sorun şu gelen yazı bir text olarak geliyor ancak belli durumlarda alt satıra geçiyor ve böylecek javascript’teki bir değişkene göndermeye çalışırken alt satıra geçen veri stringden çıkıyor. Basit bir örnek

var wysiwyg_deger = 'Bu yazı
alta geçti şimdi
hayatta göstermez artık '

Burada taşma oluyor ve editör içeriği bu degiskenden almaya çalışırken sorun çıkarıyor ve ne yazık ki sayfa kodlama hatası olarak browserda alt tarafta gözüküyor.
Bu sorunu çözmek için ufak bir php fonksiyon yazdım:

function php2js($message)
{
return preg_replace("/\r?\n/", "\\n", addslashes($message));
}

bundan sonra atamadan önce

var java_variable = 'php-tag echo php2js($db_var) php-tag-bitis'

Şeklinde kullanırsak sorununuz çözülmüş olacaktır. Benim gibi saatlerce uğraşanlar ama çözüm bulamayanların yardımına koşmuşumdur umarım.

6 Ağustos 2007

PHP Performans Teknikleri-1

Kategori: PHP, Teknik, memcached — gokhanozden @ 12:35 pm

PHP de performansı arttırabilmek için çeşitli yöntemler var. Bunlardan bazıları

  1. İşlem yapan bir algoritma çalışıyor ise daha iyisini geliştirmek
  2. Zend Platform gibi özellikle Windows Serverlarda 4 kata varan hız iddia eden platformaları kullanmak
  3. Yeni öğrendiğim ancak sanırım eski bir teknik olan “memcached” gibi önbellek yöntemleri ile çekilen sorguları önbelleğe aktarmak ve böylece önbelleğe aktarılmış verileri daha da hızlı bir şekilde almak.

3. yöntem hakkında biraz duracağım çünkü bu konu önemli önbelleğe alma yöntemleri birçok yerde kullanılmakta ve bunlardan bazıları

  • Wikipedia
  • Sourceforge
  • Digg

gibi yüklü ve fazlasıyla ziyaretçisi olan sitelerde PHPnin gücünü katlamakta. Kısa bir kod örneği vermek gerekirse

Bu düz bir sorgu olsun

function get_foo (int userid) {
result = db_select(“SELECT * FROM users WHERE userid = ?”, userid);
return result;
}

Bu ise memcached ile yapılmış bir sorgu örneği:

function get_foo (int userid) {
result = memcached_fetch(“userrow:” + userid);
if (!result) {
result = db_select(“SELECT * FROM users WHERE userid = ?”, userid);
memcached_add(“userrow:” + userid, result);
}
return result;
}

Üst tarafta önbellekte olup olmadığına bakıp eğer yoksa db den almaya çalışıyor. Kullanımı bu şekilde basit olmakla birlikte bir çok alana genişletmek mümkün.

Detaylı Bilgi İçin:

Wikipedia
PHP.net
Danga.com

WordPress.com'dan blog alın.