merhabalar php çocukları
sleep() fonksiyonuna işim düştü,
<?php
echo 'a' . "\n";
// Betik 10 saniye uyusun
sleep(10);
// uyandı !
echo 'b' . "\n";
?>
gibi bir kullanımda sayfanın gösterilmesi 10 sn sürüyor.
önce a yı ekrana basıp sonra 10 saniye uyumasından sonra b yi ekrana basması gerekir diye bir teorim var ama bu sekilde olmuyor malesef.
a yı da b yi de 10 sn geçtikten sonra ekrana basıyor. daha dogrusu öyle gözukuyor. bütün php dosyası sunucuda işlendikten sonra ekrana cıktı urettiginin farkındayım ama sleep sanki tam işe yaramıyor gibi geldi bana. baska bir yol öneren var mıdır acaba ?

 

div'i "display: none" ile gizli olarak getirip, javascript "setTimeout" ile 10 saniye sonra "display: block" kullanarak görünür yapabilirsin.

edit: senin de farkettiğin gibi "sleep" kullanarak içeriği sonradan gösterme gibi bir işlem yapamazsın. bu örnekteki gibi içerik manipülasyonlarını, sonradan yükleme, gizleme vs. gibi işlemleri css ve javascript kullanarak yapabilirsin.

pouze

@pouze
yapacagım iş içerik gösterme ile ilgili olmayacak, database ilişkili bir işlem olacagı icin js veya css ile çözüm olmaz. lakin dediğin gibi içerik gösterme ile ilgili bir işlem olsaydı js ve css ile çözülürdü. ama yine de teşekkur ederim

vadrigar

tamam o zaman "ajax" kullanabilirsin. 10 saniye sonra "post" ettir, artık ne işlem yapıyor ise yapsın. cevabı alman gerekiyor ise gönderip, ekrana yazdırırsın.

direk sorunu yazabilme imkanın var ise yaz, daha çok çözüm odaklı bir cevap verebilirim belki. çünkü doğru anladıysam çok komplike bir işleme benzemiyor.

pouze

bu işini görecektir :

<?php
echo 'bu bir<br>';
ob_end_flush();
flush();
sleep(5);
echo 'bu iki';
?>

gecusan

@gecusan
mantıklı gorunuyordu, denedim fakat istenilen gibi olmadı. sen denedin mi ?

vadrigar

sürekli kullandığım kod, bende sorunsuz çalışıyor, php 5.3 apache üzerinde çalışıyor. browser chrome firefox ve safaride sorunsuz.

gecusan

ben calıstırdıgımda sayfa 5 saniye geç yuklendi ve ikisi aynı anda ekranda gozuktu.
benim istedigim:
ilki gozuksun, 5 saniye bekleyelim ikincisi gozuksun.

vadrigar

evet aynen senin istediğin gibi çalışıyor, birinci echo yu yazıyor 5 saniye bekliyor ikinci echo yu yazıyor, sanırım senin php.ini ile birtakım sıkıntıların var. kodun başına şunları ekleyip dener misin ? :

@ini_set('zlib.output_compression',0);
@ini_set('implicit_flush',1);
@ob_end_clean();
set_time_limit(0);

gecusan

@gecusan
yok olmadı.
.ini dosyasını da değiştirdim. restart caktım, kasayı yan bile yatırdım. sonuc aynı.
başka bir yol deneyeceğim artık.
teşekkürler tüm yardımlar için.

vadrigar
1

mobil görünümden çık