İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Sitelerimiz kendi aralarında linkleşsin (Backlinkleşmece Scripti)

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
61
Konum
Antalya
Aslında script filan değil bir kaç tane fonksiyonu birleştirdim. İlk önce buna neden gerek duyduğumu yazayım. 40 tane sitem var hepsi birbirinden farklı hostlarda barınıyor. Bazıları wordpress, bazılarını ben yazdım, bazıları forum sitesi. En çok zoruma giden şey bu siteler arasında birbirlerine link vermekti. Yeni bir site açınca indexlensin vs. olsun diye bir çoğundan link verirdim. Çok uzun zamanımı alırdı. Admine gir link ekle, footer ı değiştir vs. vs. Bir kaç fonksiyon daha eklesem aslında full otomatik olacak ama :) şimdilik bu benim işimi fazlası ile görüyor.

İlk olarak bir linkler.txt oluşturuyorum ve içine linklerimi yazıyorum.

HTML:
<a href="http://www.gencsozluk.com">Genç Sözlük</a>
<a href="http://www.ilanlik.com">ilanlik</a>
<a href="http://www.csharpkitabi.com">Csharp kitabı</a>
<a href="http://www.delphidersleri.com">Delphi Dersleri</a>
<a href="http://www.csstema.com">CSS Tema</a>
<a href="http://www.seoarsivi.com">SEO</a>

Bu dosyayı sitelerden her hangi birine atıyorum.

şimdi bu linklerin hangi sitelerde çıkmasını istiyorsam aşağıdaki php kodunu o sitelere yapıştırıyorum işlem bu kadar :) . Eklediğim bütün linkler sitelerde çıkıyor.

PHP:
<?
$file = fopen("http://www.csstema.com/linkler.txt",'r'); 
while(!feof($file)){  
$satir = fgets($file); 
echo $satir; 
}
fclose($file);   
?>

txt dosyasına yeni bir link eklediğimde tüm sitelere ekleniyor yada link sildiğim de otomatik bütün sitelerden siliniyor.


Eğer sadece benim istediğim linklerin çıkmasını istiyorsam o zamanda txt dosyasına eklediğim satır numarasına göre istediğim linklerin çıkmasını sağlayabiliyorum. $metin değişkenine hangi numaraları yazarsam arada bir boşluk bırakarak o linkler otomatik siteye ekleniyor.

PHP:
<?
$metin = "1 3 5";
$dizi = explode(" ",$metin);
$file = fopen("http://www.csstema.com/linkler.txt",'r'); 
$sayi=1;
while(!feof($file)){  
$satir = fgets($file); 
if (in_array($sayi, $dizi)) {
   echo $satir; 
}  
$sayi++;
} 
fclose($file);   
?>

yada tam tersi benim çıkmasını istemediğim linklerin sıra numarasını belirte biliyorum.

PHP:
<?
$metin = "1 3 5";
$dizi = explode(" ",$metin);
$file = fopen("http://www.csstema.com/linkler.txt",'r'); 
$sayi=1;
while(!feof($file)){  
$satir = fgets($file); 
if (!in_array($sayi, $dizi)) {
   echo $satir; 
}  
$sayi++;
} 
fclose($file);   
?>
 

Loi

0
İyinet Üyesi
Katılım
13 Kasım 2006
Mesajlar
6,192
Reaction score
44
Konum
localhost
ozcancigim, bu taktik hit sayısı yükseldiginde buyuk sıkıntılar verebilir. ama dedigin gibi pratik bir yontem.
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
PHP:
<? 
$file = fopen("http://www.csstema.com/linkler.txt",'r');  
while(!feof($file)){   
$satir = fgets($file);  
echo $satir;  
} 
fclose($file);    
?>

Hazır başlık açılmışken bu kodu ilgilendiren fakat başka bir yerde kullanmak istediğim şeyi nasıl yaparım diye sorayım o zaman :)

link.txt içinde 1000 satır var. Normal olarak bu kodu çalıştırdığımızda 1000 satır okunana kadar sayfa bekliyor ve hepsini toptan gösteriyor. Fakat benim yapmak istediğim okunan her satırın çıktısı ekrana basıldıktan sonra bir alt satıra geçilecek ve çıktısı tekrar ekrana basılacak. ( Kısacası yapılan her döngü ekrana satır satır basılacak ) Mesela bunu server uzerinde php dosya.php olarak çalıştırdığımızda normal bir şekilde çalışıyor. Fakat sayfa üzerinde realtime yapamadım. Böyle bir şeyi ne şekilde yapabilirim ?
 

K1R1A1LM1AS

0
İyinet Üyesi
Katılım
26 Ocak 2010
Mesajlar
126
Reaction score
9
Konum
Antalya
Hazır başlık açılmışken bu kodu ilgilendiren fakat başka bir yerde kullanmak istediğim şeyi nasıl yaparım diye sorayım o zaman :)

link.txt içinde 1000 satır var. Normal olarak bu kodu çalıştırdığımızda 1000 satır okunana kadar sayfa bekliyor ve hepsini toptan gösteriyor. Fakat benim yapmak istediğim okunan her satırın çıktısı ekrana basıldıktan sonra bir alt satıra geçilecek ve çıktısı tekrar ekrana basılacak. ( Kısacası yapılan her döngü ekrana satır satır basılacak ) Mesela bunu server uzerinde php dosya.php olarak çalıştırdığımızda normal bir şekilde çalışıyor. Fakat sayfa üzerinde realtime yapamadım. Böyle bir şeyi ne şekilde yapabilirim ?

Sayfa çağrıldığında, öncelikle sayfada yer alan PHP kodları işletilir, bu işlemlerin sonucu da, html çıktısı olarak, sayfayı çağıran kişiye gönderilir. Bu sebepten ötürü, PHP ile yazılmış bir kodun sonucunun, kod henüz sonlanmadan, sayfaya belli aralıklarla yansıtılması mümkün değildir. Tabii tüm satırları tek seferde çekmek yerine, ajax kullanarak, küme küme satırları çekmeyi deniyebilirsiniz.

Ayrıca, kodu sayfadan ayırıp, başka bir sayfanın içinde işletirseniz ve o sayfayı da, iframe tarzı harici bir pencere içinde yüklerseniz, bu tür işlemi uzun süren kodların, sayfanızın açılış süresini engellemesini de, önlemiş olursunuz. Alternatif olarak, activex kütüphanelerini kullanan, js dosya okuma komutlarıda mevcut (Örn: http://www.c-point.com/JavaScript/articles/file_access_with_JavaScript.htm), ancak bu tür komutları hiç denemediğim için, sonucun ekrana ne şekilde yansıtılacağı konusunda, fikir sahibi değilim.
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
PHP:
<? 
$file = fopen("http://www.csstema.com/linkler.txt",'r');  
while(!feof($file)){   
$satir = fgets($file);  
echo $satir;  
} 
fclose($file);    
?>

Hazır başlık açılmışken bu kodu ilgilendiren fakat başka bir yerde kullanmak istediğim şeyi nasıl yaparım diye sorayım o zaman :)

link.txt içinde 1000 satır var. Normal olarak bu kodu çalıştırdığımızda 1000 satır okunana kadar sayfa bekliyor ve hepsini toptan gösteriyor. Fakat benim yapmak istediğim okunan her satırın çıktısı ekrana basıldıktan sonra bir alt satıra geçilecek ve çıktısı tekrar ekrana basılacak. ( Kısacası yapılan her döngü ekrana satır satır basılacak ) Mesela bunu server uzerinde php dosya.php olarak çalıştırdığımızda normal bir şekilde çalışıyor. Fakat sayfa üzerinde realtime yapamadım. Böyle bir şeyi ne şekilde yapabilirim ?

Mümkündür, flush bunun için var. :)

Örnek,

PHP:
<?
for ($i=0;$i<10;$i++) {
echo 'Satır '.$i;
flush();
usleep(200000);
}
?>
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
KRALMAS evet araştırdığımda ajax ve benzeri yöntemler buldum fakat php ile yapmak istiyorum. Eğer yapamazsam o şekilde denicem mecburen.

atay dediğin şeyi while ile yaptım fakat sonuç aynı oldu. Verdiğin for döngüsünde $i<10 yerine $i<1000 yazıp denersen olmadığını görebilirsin.

En iyisi daha sonra detaylı bir şekilde uğraşıp yapmaya çalışayım bunu.

Teşekkürler
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Bin satır dosyadan okumak için flush() arası süreleri gözle zaten göremezsiniz.
flush() çalışmıyorsa, bir çok nedeni olabilir PHP'nin yüklenme şekli, browser, işletim sistemi vb.
 

K1R1A1LM1AS

0
İyinet Üyesi
Katılım
26 Ocak 2010
Mesajlar
126
Reaction score
9
Konum
Antalya
atay'ın örneği gayet güzel aslında, her browserda çalışır mı bilemiyorum ama, aşağıdaki adreste gördüğüm bir örneği, şu şekilde Firefoxda denedim gayet iyi sonuç veriyor.

http://www.php.net/manual/tr/function.flush.php

PHP:
<?PHP
if (ob_get_level() == 0) ob_start();

for ($i = 0; $i<1000; $i++){
    echo 'Satır '.($i+1).'<br />';

    ob_flush();
    flush();
    sleep(1);
}

ob_end_flush();
?>

Mevcut scriptede, aşağıdaki şekilde uygulamak mümkün.

PHP:
<?PHP
if (ob_get_level() == 0) ob_start();
 
$file = fopen("http://www.csstema.com/linkler.txt",'r');  
while(!feof($file)){   
    $satir = fgets($file);  
    echo $satir;
    ob_flush();
    flush();  
} 
fclose($file);    

ob_end_flush();
?>
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst