php döngülerde anlık çıktı gösterme

Author: P.Crew / Etiketler: , , , , ,

 Merhaba arkadaşlar. php de kimi zaman uzun döngüler kullanırız. Yalnız şöyle birşey var , döngünün belli bir kısmı bitmeden çıktı ekrana basılmaz.

Bu yazımda sizlere php de döngülerde anlık sonuç vermeyi göstericem.

Sanırım giriş pek açıklayıcı olmadı o yüzden şöyle bir örnek vereyim.


$aranacak="haber";
$ilkdeger="fak";
$z=1;
$desen="#

;
for($i=0;$i<=1000;$i=$i+100){
$url="http://www.google.com/search?q=link:$aranacak&num=100&start=$i";
$cikti=file_get_contents($url);
preg_match_all($desen, $cikti, $melan);
foreach ($melan[1] as $kolia)
{
if($ilkdeger==$kolia){break;}
echo "$z-)"."$kolia
"
;
$z++;
}
if($ilkdeger=="fak"){$ilkdeger=$melan[1][0];}
}
?>

Yukarıdaki kodlarla google da istediğimiz kelimeyi aratıp sonuçları liste halinde ekrana basıyoruz. Ama denerseniz farkediceksiniz sonuçları anlık

olarak ekrana basmıyor.

Şimdi ob_start(); fonksiyonumuzu kullanarak çıktılarımızı tamponluyalım ve her echo dan sonra ob_flush(); ve flush(); fonksiyonlarımızla betiğin sonlanmasını beklemeden çıktımızı ekrana basalım.

İsterseniz sleep() fonksiyonuyla çıktı ekrana basıldıktan sonra biraz duraklatabiliriz. sleep fonksiyonu parametresini saniye cinsinden alır.
usleep() fonksiyonu ise milisaniye cinsinden alır. Ben usleep kullanıcam.


ob_start();
$aranacak="haber";
$ilkdeger="fak";
$z=1;
$desen="#

;
for($i=0;$i<=1000;$i=$i+100){
$url="http://www.google.com/search?q=link:$aranacak&num=100&start=$i";
$cikti=file_get_contents($url);
preg_match_all($desen, $cikti, $melan);
foreach ($melan[1] as $kolia)
{
if($ilkdeger==$kolia){break;}
echo "$z-)"."$kolia
"
;
ob_flush();
flush();
usleep(500000);
$z++;
}
if($ilkdeger=="fak"){$ilkdeger=$melan[1][0];}
}
?>

Yukarıdaki betiği çalıştırdığımızda çıktımız anlık olarak ekrana basılıyor olucak :)

0 yorum: