Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Optymalizacja skryptu zegara.
Forum PHP.pl > Forum > Przedszkole
L0k0
Witam!

Ściągnąłem sobie skrypt Pana Jacka i wszystko działa fajnie - jedna wada:
Kod
skrypt powoduje strasznie wolne działanie strony.


Czy ktoś ma jakiś pomysł na optymalizacje kodu?

Plik imieniny jest niepotrzebny i jest zakomentowany, jego obecność lub brak obecności nie wpływa na szybkość działania strony.

  1. <?php
  2. /**************************************************
  3.  * Czas z serwera daytime *
  4.  **************************************************
  5.  * Wersja: 1.0 *
  6.  * Autor: Jacek Kowalski (http://jacekk.info) *
  7.  * *
  8.  * Strona WWW: <a href="http://jacekk.info/scripts/time" target="_blank">http://jacekk.info/scripts/time</a> *
  9.  * *
  10.  * Utwór rozprowadzany na licencji *
  11.  * <a href="http://creativecommons.org/licenses/by-nc/2.5/" target="_blank">http://creativecommons.org/licenses/by-nc/2.5/</a> *
  12.  **************************************************/
  13.  
  14. /* Kodowanie znaków ISO-8859-2 */
  15.  
  16. //include('imieniny.php');
  17.  
  18. //Header('Pragma: no-cache');
  19. $serv = array(
  20. '132.163.4.102',
  21. '132.163.4.103',
  22. '128.138.140.44',
  23. '131.107.1.10',
  24. '132.163.4.101',
  25. '216.200.93.8',
  26. '208.184.49.9'
  27. );
  28.  
  29. shuffle($serv);
  30.  
  31. $len = count($serv);
  32. for($i=0; $i<$len; $i++) {
  33. if($fp = @fsockopen($serv[$i], '13', $e1, $e2, 2)) {
  34. break;
  35. }
  36. }
  37.  
  38. unset($serv, $len, $i);
  39.  
  40. if($fp) {
  41. fwrite($fp, "\n");
  42. $tc = fread($fp, 2048);
  43. fclose($fp);
  44.  
  45. $eg = explode(' ', $tc);
  46. $gt = explode(':', $eg[2]);
  47. $gd = explode('-', $eg[1]);
  48.  
  49. $st = mktime($gt[0], $gt[1], $gt[2], $gd[1], $gd[2], $gd[0]);
  50. $st = $st+3600+(date('I')*3600);
  51. unset($tc, $eg, $gt, $gd, $fp);
  52. }
  53. else
  54. {
  55. $st = mktime();
  56. }
  57.  
  58. $st = explode(',', date('w,d,n,Y,H,i,s', $st));
  59. ?>
  60. <html>
  61. <head>
  62. <style type="text/css">
  63.  
  64. #hm { color: #888;
  65. font-wight: bolder;
  66. font-size: 30px;}
  67. #s { color: #888;
  68. font: bold inherit;}
  69. #day {color: #000;font-size:12px;}
  70. small { color: #CCC;
  71. font-size: 9px;}
  72. </style>
  73. <script type="text/javascript">
  74. <?php
  75. echo 'h = '.$st[4].';
  76. m = '.$st[5].';
  77. s = '.$st[6].';
  78.  
  79. ';
  80. ?>
  81. function dtim() {
  82. if(s==60) {s=0;m=m+1;}
  83. if(m==60) {m=0;h=h+1;}
  84. if(h==24) {window.refresh();}
  85.  
  86. document.getElementById('hm').innerHTML = h+':'+((m>9) ? m : '0'+m);
  87. document.getElementById('s').innerHTML = (s>9) ? ':'+s : ':0'+s;
  88.  
  89. s=s+1;
  90. setTimeout("dtim()", 1000);
  91. }
  92. </script>
  93. </head>
  94. <body onLoad="java script:dtim();">
  95.  
  96.  
  97.  
  98.  
  99. <table width="1024" height="150">
  100. <tr>
  101. <td width="150">
  102.  
  103. </td>
  104. <td background="./gfx/logo/bs_logo.png" width="666"></td>
  105. <td width="150">
  106. <center>
  107. <?php
  108.  
  109. $months = array('', 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'paĽdziernika', 'listopada', 'grudnia');
  110. $days = array('niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota');
  111.  
  112. echo '<span id="hm">'.$st[4].':'.$st[5].'</span><span id="s">:'.$st[6].'</span><br/>
  113. <span id="day">'.$days[$st[0]].', '.$st[1].' '.$months[$st[2]].' '.$st[3].'<br/>
  114. <b>Imieniny</b>:<br>'.$imieniny[$st[2]][(int)$st[1]].'</span><br/>';
  115.  
  116. ?>
  117. </center>
  118. </td>
  119. </tr>
  120. </table>


Z góry dzięki.
CuteOne
Pomiń działania na socketach i zostaw zwykłe pobieranie daty

  1. $date = date(explode(',','w,d,n,Y,H,i,s'));
  2. echo $date[0].'-'.$date[1];
L0k0
Cytat(CuteOne @ 25.03.2011, 14:32:16 ) *
Pomiń działania na socketach i zostaw zwykłe pobieranie daty

  1. $date = date(explode(',','w,d,n,Y,H,i,s'));
  2. echo $date[0].'-'.$date[1];


Zamieniłem
  1. $st = explode(',', date('w,d,n,Y,H,i,s', $st));

na
  1. $date = date(explode(',','w,d,n,Y,H,i,s'));
  2. oraz pozamieniałem w echo $st na $date


i coś jest nie tak... Wyświetla mi tylko jedną cyfrę...

Czy mógłbyś, proszę, napisać dokładniej co usunąć i co wstawić? Nie jest to mój skrypt i nie chcę się zagłębiać w jego działanie...

Pozdrawiam
CuteOne
mój błąd ;]

  1. $date = explode(',',date('w,d,n,Y,H,i,s'));
  2. echo $date[0].'-'.$date[1];
L0k0
Cytat(CuteOne @ 25.03.2011, 15:27:39 ) *
mój błąd ;]

  1. $date = explode(',',date('w,d,n,Y,H,i,s'));
  2. echo $date[0].'-'.$date[1];


OK, zadziałało - jest tylko mały problem: nie odświeża czasu na bieżąco. Czy to rozwiązanie tak właśnie ma działać?
CuteOne
  1. <?php $st = explode(',',date('w,d,n,Y,H,i,s')); ?>
  2.  
  3.  
  4. <html>
  5. <head>
  6. <style type="text/css">
  7.  
  8. #hm { color: #888;
  9. font-wight: bolder;
  10. font-size: 30px;}
  11. #s { color: #888;
  12. font: bold inherit;}
  13. #day {color: #000;font-size:12px;}
  14. small { color: #CCC;
  15. font-size: 9px;}
  16. </style>
  17. <script type="text/javascript">
  18. <?php
  19. echo 'h = '.$st[4].';
  20. m = '.$st[5].';
  21. s = '.$st[6].';
  22.  
  23. ';
  24. ?>
  25. function dtim() {
  26. if(s==60) {s=0;m=m+1;}
  27. if(m==60) {m=0;h=h+1;}
  28. if(h==24) {window.refresh();}
  29.  
  30. document.getElementById('hm').innerHTML = h+':'+((m>9) ? m : '0'+m);
  31. document.getElementById('s').innerHTML = (s>9) ? ':'+s : ':0'+s;
  32.  
  33. s=s+1;
  34. setTimeout("dtim()", 1000);
  35. }
  36. </script>
  37. </head>
  38. <body onLoad="java script:dtim();">
  39.  
  40.  
  41.  
  42.  
  43. <table width="1024" height="150">
  44. <tr>
  45. <td width="150">
  46.  
  47. </td>
  48. <td background="./gfx/logo/bs_logo.png" width="666"></td>
  49. <td width="150">
  50. <center>
  51. <?php
  52.  
  53. $months = array('', 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'paĽdziernika', 'listopada', 'grudnia');
  54. $days = array('niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota');
  55.  
  56. echo '<span id="hm">'.$st[4].':'.$st[5].'</span><span id="s">:'.$st[6].'</span><br/>
  57. <span id="day">'.$days[$st[0]].', '.$st[1].' '.$months[$st[2]].' '.$st[3].'<br/>
  58. <b>Imieniny</b>:<br>'.$imieniny[$st[2]][(int)$st[1]].'</span><br/>';
  59.  
  60. ?>
  61. </center>
  62. </td>
  63. </tr>
  64. </table>


Na nastepny raz zanim zaczniesz zadawać pytania naucz się chociaż podstaw php, html
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.