Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

php yi yorumladıktan sonra htm ye çevirmek ??

B

besturk.net

Misafir
islemler.php = burada karışık php işlemleri yapılıyor mysql bağlantılarıyla felan.Kısacası açılması biraz geç oluyor.(işlem yaptığı için)

şimdi öyle bir php olcakki onu çalıştırdığımızda islemler.php ye gircek onun yorumlanmış halinin kodunu alcak (htm) ve islemler.htm olarak kaydetcek.
Burada amacım siteyi hızlandırmak.

Umarım anlatabilmişimdir...
Şimdiden teşekkür ederim
 

hdogan

0
Onaylı Üye
Üye
Katılım
14 Ekim 2004
Mesajlar
693
Açılan Konu
31
Tepki puanı
2
Konum
Ankara
<?php
ob_start();
include("islemler.php");
$cikti = ob_get_contents();
ob_end_clean();
?>

$cikti islemler.php'nin html ciktisi olur. istedigin yerde echo $cikti olarak kullanabilirsin veya dosyaya yazdirmak icin:

<?php
$fp = fopen("islemler.htm", "w+");
fwrite($fp, $cikti);
fclose($fp);
?>

gibi bir kod kullanabilirsin.
 

yoktur

0
Onaylı Üye
Üye
Katılım
28 Ekim 2004
Mesajlar
2,366
Açılan Konu
90
Tepki puanı
1
Konum
/etc/istanbul.c
PHP:
<?
$aralık = 60; // 5 dakika

$tampon_dosya_adi  ="tampon/a.txt";
    //"tampon/".base64_encode($SERVER['PHP_SELF']+$SERVER['QUERY_STRING']);
// dosya adı önemli değil yeterki farklı olsun her url için...
$tamponla = !(time() - filectime($tampon_dosya_adi)<$aralık);
if (!$tamponla)
{
    // tampon halen yeterli güncellikte, tampondan gönderelim
    print (file_get_contents($tampon_dosya_adi));
    //include("f.txt"); // footerı burda basabiliriz
    die; // işimiz bitti.
}
else
{
    // tampon ölmüş
    ob_start();
}
 ?>


 <?
 if ($tamponla)
{    ob_start();
fopen("http://www.site.com","r");

    // taze veri ürettik şimdi
     $icerik = ob_get_contents();
     ob_end_clean(); // kapatalım
    print ($icerik); // gönderelim
     if ($fh = fopen($tampon_dosya_adi, "w")) //kaydedelim.
    {
        fwrite($fh, $icerik);
        fclose($fh);
    }
}
?>
 

yoktur

0
Onaylı Üye
Üye
Katılım
28 Ekim 2004
Mesajlar
2,366
Açılan Konu
90
Tepki puanı
1
Konum
/etc/istanbul.c
not:

filectime fonksiyonu sadece unix makinalarda çalışıyo.localhostun windows ise kod çalışmaz.
hadee kolay gele
 
Y

Yalowa

Misafir
Ehe bence bu hızlandırmaz :) aksine CPU'dan yer.

Ufak bir siten varsa problem değil.Ama aynı anda sitede 100 150 kişi gezerse dagıtır bu kodlar.
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
Yalowa' Alıntı:
Ehe bence bu hızlandırmaz :) aksine CPU'dan yer.

Ufak bir siten varsa problem değil.Ama aynı anda sitede 100 150 kişi gezerse dagıtır bu kodlar.

PHP herseferinde kodu derleyip (interpreter oldugu icin) ciktiyi webserver'a gecirir yada ekrana yada dosyaya yazar.

Derleme islemi CPU bagimlidir. Tamponlama(caching) ile PHP herseferinde kodu derlemek zorunda kalmaz ve CPU az kullanilmis olur.

PHP icin yazilan accelerator(hizlandirici) programlarinin da mantigi budur, onlar caching islemini disk yerine paylasilmis bellek icinde yaparlar. (ornek: Turck MMCache)
 

yoktur

0
Onaylı Üye
Üye
Katılım
28 Ekim 2004
Mesajlar
2,366
Açılan Konu
90
Tepki puanı
1
Konum
/etc/istanbul.c
Turck MMCache cpu katili bee admin :p
 

yoktur

0
Onaylı Üye
Üye
Katılım
28 Ekim 2004
Mesajlar
2,366
Açılan Konu
90
Tepki puanı
1
Konum
/etc/istanbul.c
çok yoğun kullanılan sunucumuzda biz oyle gözlemledik.

cache sistemlerinde bir değer veriyorsun mesela 1 dakika
alet 1 dk boyunca php exec etmeden siteyi gönderiyor cache aldıgı değeri
1 dk yapılan değişiklikler çıkmıyor sitede yani
o 1 dk düşürürsen mesela 5 saniye gibi
bu kez 5 sn de bir cache den veriyor aynı sayfayı
eğer 10-20 sayfalık bi site var ise cache güzel calısır
ama 500 tane site olan bi serverda calıstırırsan 4-5 gb ram takmak gerekir cpu hariç
cachein sayfasındada yazıyor zaten
 
Y

Yalowa

Misafir
ehe, ben ilk defa böyle bi dalga duyuyorum.farzedin ki sitede sayac var, adam 1 dk boyunca 6 sayfa gezdi, 6sıda cacheden verildi.Nasıl artıcak benim sayacım ??

Kafam almadı benim o işi
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
MMCache programin calismasini etkilemez.
Sayac calismasi gerektigi gibi calisir.

Daha once herhangi bir programlama dili ile ugrasti iseniz bilirsiniz:

+ Derleyici bazli programlar: Program yazildiktan sonra bir derleyici ile derlenir ve binary (executable) hale getirilir. Programda degisiklik yapmadikca bu programi tekrar derlemeye gerek yoktur. Ornek: C,C++,DELPHI..
+ Interpreter bazli programlar: Program yazildiktan sonra derlenemez. Her calistirildiginda interpreter(yorumlayici) tarafindan yorumlanir. Ornek: Perl, PHP ...
+ Birde bu ikisinin arasinda olanlar var onlar hakkinda fazla bilgim yok.

Bizim burda konustugunuz PHP interpreter tabanli programlar sinifina giriyor.

MMCache icin:
MMCache(yada benzeri program) kurulu degil ise, Her seferinde kod interpreter(php.exe yada shared pool daki PHP) tarafindan derlenip hazirlaniyor.
Bu islem her seferinde yapilacagina 1 kez yapilirsa CPU dan tasarruf ediliyor. MMcache iste bu 1 sefer derleme gorevini yapan program. Eger bu esnada PHP kodu degisirse MMCache kodu yeniden derliyor.

Dosya tabanli (file based) cache sistemi MMCache den farklidir.
"Yoktur" un verdigi kod yine CPU dan tasarruf saglaniyor, ama biraz farkli bir yontem ile. Bu sefer cache de tutulan html ciktisi. [ Cache denilen nesne aslinda bir directory(dizin) , cache icin ramdisk kullanilirsa performans daha iyi olur. ]

Ornegin iyinet in subdomainlerinin hepsi cache de tutulmaktadir. Her seferinde gidip veritabinindan bilgi okuyup o bilgiler ile tablo (table) olusturup HTML ciktisi hazirlamak yerine bu islem belli araliklar ile yapilmaktadir. Bu aralik degeri de "Yoktur" un kodundaki

$aralık = 60; // 5 dakika

satiri gibi bir degerdir. Boylece program sadece dosyanin zaman asimina bakar ve 5 dakidan eski ise cache deki dosyayi siler ve yerine yeni bir HTML dosyasi yaratir. 5 dakika burda cok mantikli gelmeyebilir. Bu tamamen sizin ihtiyaciniza gore ayarlanmalidir. Cok SIKLIKLA verilerin degisitigi bir sistemde 5 dakika yeterli iken, iyinet subdomainlerinde 1 hafta lik zaman asimi yeterli olabilir.
 
Y

Yalowa

Misafir
tamam ne demek istediğini anladım, PHP biliyorum.Ama bu durumda bir nukeye bunu uyarlamak mümkün değil ?
 
Üst