Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] czas z serwera zewnętrznego
Forum PHP.pl > Forum > PHP
qwe
witam

Próbuję w skrypcie dodać funkcję function query_time_server aby wyświetlić datę i godzinę z serwera ntp.


  1. <?php
  2. query_time_server("ntps1-1.cs.tu-berlin.de","37");
  3.  
  4. function query_time_server($timeserver, $socket) {
  5.  
  6.  echo "$timeserver:$socket<br>";
  7.  $fp = fsockopen($timeserver,$socket,$err,$errstr,5) or die("FSOCKOPEN FAILED");
  8.  // parameters: server, socket, error code, error text, timeout
  9.  if ($fp) {
  10.    fputs($fp,"\n");
  11.    $timevalue = fread($fp,49);
  12.    fclose($fp); // close the connection
  13.  } else {
  14.    $timevalue = " ";
  15.  }
  16.  $ret = array();
  17.  $ret[] = $timevalue;
  18.  $ret[] = $err;     # error code
  19.  $ret[] = $errstr;  # error text
  20.  return($ret);
  21. }
  22. ?>



ale w tym kodzie ciągle wyskakuje błąd FSOCKOPEN FAILED i nie wiem dlaczego
wookieb
Popraw kod na czytelny to pogadamy.
bazyliszek83
Dostałem warning:
  1. <?php
  2. Warning: fsockopen() [function.fsockopen]: unable to connect to ntps1-1.cs.tu-berlin.de:37 (Connection timed out)
  3. ?>


Wygląda na to ze serwer jest "walniety":)

Spróbuj ten : "time.nrc.ca" smile.gif
qwe
a ja dostałem taki komunikat

  1. <?php
  2. Warning: fsockopen() has been disabled for security reasons
  3. FSOCKOPEN FAILED
  4. ?>


z tej strony wziąłem kod i połączyłem http://www.kloth.net/software/timesrv1.php

  1. <?
  2. /* Query a time server
  3.    (C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */
  4. $timeserver = "time-C.timefreq.bldrdoc.gov";
  5. $timercvd = query_time_server($timeserver,13);
  6. if (!$timercvd[1]) { # if no error from query_time_server
  7.  $timevalue = $timercvd[0];
  8.  echo "Time check from time server ",$timeserver," : ",$timevalue,".<br>\n";
  9.  
  10. } #if (!$timercvd)
  11. else {
  12.  echo "Unfortunately, the time server $timeserver could not be reached at this time. ";
  13.  echo "$timercvd[1] $timercvd[2].<br>\n";
  14. }
  15.  
  16.    function query_time_server( $timeserver, $socket ) {
  17.        $fp = @fsockopen( $timeserver, $socket, $err, $errstr, 5 );
  18.        if ( $fp ) {
  19.            fputs( $fp, "\n" );
  20.            $timevalue = fread( $fp, 49 );
  21.            fclose( $fp );
  22.        }
  23.        else {
  24.            $timevalue = " ";
  25.        }
  26.        $ret = array();
  27.        $ret[] = $timevalue;
  28.        $ret[] = $err;
  29.        $ret[] = $errstr;
  30.        return( $ret );
  31.    }
  32. ?>


ale wyświetla tylko
Kod
Time check from time server
: bez podania danych
Mephistofeles
Cytat
Warning: fsockopen() has been disabled for security reasons

Wiesz co ten komunikat oznacza? Funkcja została wyłączona przez administratora, z powodu bezpieczeństwa. I co najwyżej teraz możesz pogadać z adminem, ale życzę powodzenia, bo raczej rozmowa nic nie da winksmiley.jpg. No chyba, że to na localhost, wtedy popatrz w php.ini.
bazyliszek83
Wyglada na to ze u ciebie na serwerze sockety sa poblokowane. wywołaj phpinfo(); i poszukaj "Registered Stream Socket Transports" , "Sockets Support " oraz "default_socket_timeout". Wklej wyniki tutaj i porównamy ustawienia.
qwe
Registered Stream Socket Transports tcp, udp, unix, udg
Sockets Support enabled
default_socket_timeout local value 10 Master Value 10


proszę bazyliszek83
bazyliszek83
Ja mam tak :
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
default_socket_timeout local value 60 Master Value 60

Spróbuj może odezwać się do admina w tej sprawie. Może da ci jakaś alternatywe...
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.