Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zatrzymanie wykonywania skryptu na określony czas
Forum PHP.pl > Forum > Przedszkole
Jarod
Często podczas testowania skryptów korzystam z funkcji exit() jeśli nie chcę aby skrypt wykonał się w całości. Skrypt jest zatrzymywany w tym miejscu, gdzie znajduje się funkcja exit.
Zamiast tego wolałbym używać sleep(). Problem w tym, że nie ważne go wstawię tą funkcję, to i tak jest wykonywana na samym początku..

Przykład:
  1. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
  2. <html>
  3. <head>
  4. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\"/>
  5. <meta name=\"pragma\" content=\"no-cache\" />
  6. <title>Kasowanie kont klientów</title>
  7. <link rel=\"stylesheet\" type=\"text/css\" href=\"roboczy.css\" />
  8. </head>
  9. <body>
  10. <table width=\"80%\" align=\"center\" border=\"0\" cellspacing=\"1\" cellpadding=\"10\">
  11. <tr>
  12. <td><img src=\"images/spacer.gif\" alt=\"\" width=\"0\" height=\"120\"></td>
  13. </tr>
  14. <tr>
  15. <td><h2 class=\"error\">Proszę czekać...</h2></td>
  16. </tr>
  17. </table>
  18. <?php
  19. sleep(10);
  20. ..
  21. ..
  22. ..
  23. ?>
  24. </body>
  25. </html>

To napis nie zostaje wyświetlony, tylko skrypt czeka 10 sekund, wyświetla napis i się wykonuje..

Jak zrobić, żeby zatrzymać na 10 sekund w dowolnym miejscu?? Może znacie inne funkje?
Pozdrawiam
hwao
da sie to zrobic przy pomocy sleep tylko trzeba buffor oprozniac.
Pozatm ie nie wyswietla dopuki nie otrzyma 255 znakow:)
Jarod
Cytat( hwao)
da sie to zrobic przy pomocy sleep tylko trzeba buffor oprozniac.

Jak to zrobić?

Cytat(hwao)
Pozatm ie nie wyswietla dopuki nie otrzyma 255 znakow:)

Nie korzystam z IE smile.gif
hwao
Modified progress bar.. Works in IE, Mozilla+FF.
  1. <html>
  2. <head>
  3. <style type=\"text/css\"><!--
  4.  
  5. div {
  6.  margin: 1px;
  7.  height: 20px;
  8.  padding: 1px;
  9.  border: 1px solid #000;
  10.  width: 275px;
  11.  background: #fff;
  12.  color: #000;
  13.  float: left;
  14.  clear: right;
  15.  top: 38px;
  16.  z-index: 9
  17. }
  18.  
  19. .percents {
  20.  background: #FFF;
  21.  border: 1px solid #CCC;
  22.  margin: 1px;
  23.  height: 20px;
  24.  position:absolute;
  25.  width:275px;
  26.  z-index:10;
  27.  left: 10px;
  28.  top: 38px;
  29.  text-align: center;
  30. }
  31.  
  32. .blocks {
  33.  background: #EEE;
  34.  border: 1px solid #CCC;
  35.  margin: 1px;
  36.  height: 20px;
  37.  width: 10px;
  38.  position: absolute;
  39.  z-index:11;
  40.  left: 12px;
  41.  top: 38px;
  42.  filter: alpha(opacity=50);
  43.  -moz-opacity: 0.5;
  44.  opacity: 0.5;
  45.  -khtml-opacity: .5
  46. }
  47.  
  48. -->
  49. </style>
  50. </head>
  51. <body>
  52.  
  53. <?php
  54.  
  55. if (ob_get_level() == 0) {
  56.  ob_start();
  57. }
  58. echo str_pad('Loading... ',4096).&#092;"<br />n\";
  59. for ($i = 0; $i < 25; $i++) {
  60.  $d = $d + 11;
  61.  $m=$d+10;
  62.  //This div will show loading percents
  63.  echo '<div class=\"percents\">' . $i*4 . '%&nbsp;complete</div>';
  64.  //This div will show progress bar
  65.  echo '<div class=\"blocks\" style=\"left: '.$d.'px\">&nbsp;</div>';
  66.  flush();
  67.  ob_flush();
  68.  sleep(1);
  69. }
  70. ?>
  71. <div class=\"percents\" style=\"z-index:12\">Done.</div>
  72. </body>
  73. </html>


Wiec smile.gif
flush" title="Zobacz w manualu PHP" target="_manual() i ob_flush" title="Zobacz w manualu PHP" target="_manual()
smile.gif
Jarod
Hehe zajefajny ten skrypcik smile.gif Szkoda że nie zabardzo go rozumiem smile.gif
Ja poprostu wyswietlam tekst "Proszę czekać" a jak wykonam zapytanuia na bazie to nakładam na niego drugi tekst "........" smile.gif

A funkcja sleep() była mi potrzebna, żeby zobaczyć czy tekst w odpowiednim miejscu został wyświetlony tongue.gif - skrypt za szybko działą

Pozdrawiam

PS. Ale kiedyś napewno powróce do Twojego sktypu - jest naprawde ciekawy.
Swoją drogą to czy w swoich projektach często stosujesz takie bajery??
hwao
Cytat(J4r0d @ 2005-05-03 15:25:33)
PS. Ale kiedyś napewno powróce do Twojego sktypu - jest naprawde ciekawy.
Swoją drogą to czy w swoich projektach często stosujesz takie bajery??

Kodzik jest z manuala smile.gif ale sam pisalem podobne smile.gif (umnie cos znalesc to woo smile.gif "troche" tych plikow sie nazbieralo smile.gif )

Co do bajerow smile.gif to aby bylo najwygodniej dla usera np takie taby jak na dole tu
http://bts.net.pl/hwao/xhtml/
Jarod
Wyłuskałem z tego kodu to:
  1. <?php
  2.  flush();
  3.  ob_flush();
  4.  sleep(5);
  5. ?>

i wstawiłem w miejsce, w którym chcę zatrzymać na 5 sekund wykonywanie skryptu i nici. Odlicza 5 i dopiero się wykonuje (na samym początku)
hwao
Hmm moze w php.ini masz wlaczone bufowanie, hmmm a sproboj tak
  1. <?php
  2.  
  3. while( 1 ) { // albo 0 juz nie pamietam :)
  4.  flush();
  5.  ob_flush();
  6.  sleep(5);
  7. echo 'Jakis napis<br />';
  8. }
  9.  
  10. ?>


Powinien Ci sie co 5 s pojawiac jakis napis smile.gif
marcin24
Witam...

A ja mam nieco inne pytanie co do funkcji sleep();
Chodzi mi o to jaka max. wartosc mozemy wpisac przy wywolywaniu tej funkcji questionmark.gif

Pozdro...
Jarod
Cytat(hwao @ 2005-05-03 15:10:42)
Hmm moze w php.ini masz wlaczone bufowanie, hmmm a sproboj tak
  1. <?php
  2.  
  3. while( 1 ) { // albo 0 juz nie pamietam :)
  4.  flush();
  5.  ob_flush();
  6.  sleep(5);
  7. echo 'Jakis napis<br />';
  8. }
  9.  
  10. ?>


Powinien Ci sie co 5 s pojawiac jakis napis smile.gif

Niestety nie działa :/
dr_bonzo
Cytat
Jaka max. wartosc mozemy wpisac przy wywolywaniu tej funkcji questionmark.gif


2^(31) - 1

tj. ok 2mld
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.