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

Kayıt Ol

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

Ozcan

0
Onaylı Üye
Üye
Katılım
12 Mayıs 2007
Mesajlar
3,749
Açılan Konu
428
Tepki puanı
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
Onaylı Üye
Üye
Katılım
13 Kasım 2006
Mesajlar
6,192
Açılan Konu
145
Tepki puanı
44
Konum
localhost
ozcancigim, bu taktik hit sayısı yükseldiginde buyuk sıkıntılar verebilir. ama dedigin gibi pratik bir yontem.
 

Ozcan

0
Onaylı Üye
Üye
Katılım
12 Mayıs 2007
Mesajlar
3,749
Açılan Konu
428
Tepki puanı
61
Konum
Antalya
ozcancigim, bu taktik hit sayısı yükseldiginde buyuk sıkıntılar verebilir. ama dedigin gibi pratik bir yontem.

çok hitli sitelerde cron ile çekilebilir siteye linkler.txt
 

OsmanAtabey

0
Onaylı Üye
Üye
Katılım
26 Mart 2005
Mesajlar
922
Açılan Konu
52
Tepki puanı
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
Onaylı Üye
Üye
Katılım
26 Ocak 2010
Mesajlar
126
Açılan Konu
3
Tepki puanı
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
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
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
Onaylı Üye
Üye
Katılım
26 Mart 2005
Mesajlar
922
Açılan Konu
52
Tepki puanı
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
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
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
Onaylı Üye
Üye
Katılım
26 Ocak 2010
Mesajlar
126
Açılan Konu
3
Tepki puanı
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();
?>
 
Üst