Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zatrzymanie wykonywania skryptu na określony czas, coś innego niż sleep()
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował J4r0d 3.05.2005, 13:24:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




da sie to zrobic przy pomocy sleep tylko trzeba buffor oprozniac.
Pozatm ie nie wyswietla dopuki nie otrzyma 255 znakow:)
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
hwao
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
flush" title="Zobacz w manualu PHP" target="_manual() i ob_flush" title="Zobacz w manualu PHP" target="_manual()
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Jarod
post
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Hehe zajefajny ten skrypcik (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Szkoda że nie zabardzo go rozumiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ja poprostu wyswietlam tekst "Proszę czekać" a jak wykonam zapytanuia na bazie to nakładam na niego drugi tekst "........" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A funkcja sleep() była mi potrzebna, żeby zobaczyć czy tekst w odpowiednim miejscu został wyświetlony (IMG:http://forum.php.pl/style_emoticons/default/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??
Go to the top of the page
+Quote Post
hwao
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale sam pisalem podobne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (umnie cos znalesc to woo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) "troche" tych plikow sie nazbieralo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )

Co do bajerow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) to aby bylo najwygodniej dla usera np takie taby jak na dole tu
http://bts.net.pl/hwao/xhtml/
Go to the top of the page
+Quote Post
Jarod
post
Post #7





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
hwao
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marcin24
post
Post #9





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.03.2005
Skąd: Konin

Ostrzeżenie: (0%)
-----


Witam...

A ja mam nieco inne pytanie co do funkcji sleep();
Chodzi mi o to jaka max. wartosc mozemy wpisac przy wywolywaniu tej funkcji (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Pozdro...
Go to the top of the page
+Quote Post
Jarod
post
Post #10





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Niestety nie działa :/
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
Jaka max. wartosc mozemy wpisac przy wywolywaniu tej funkcji (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)


2^(31) - 1

tj. ok 2mld
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:48