Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] cache status serwerów
Duo
post 18.11.2010, 16:39:24
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


Witam !
Kombinuję sobie, jak połączyć cache ze statusem serwer, tak aby status odświeżał się co 30 sekund, więc tak aktualnie to statusik pojawia się za pierwszym razem, po odświeżeniu pojawia się link do statusu. 1 wejście obrazek, potem http://www.efrags.pl/status/cs/ffa.efrags.pl:27015.png, a nie obrazek. worriedsmiley.gif Proszę nie krzyczeć, że coś źle bo jestem zielony, chciałem połączyć dwa skrypty ze sobą ale coś trochę nie wyszło.

To co wyskrobałem:

  1. <?php
  2. /*
  3. *
  4. * Graficzny status serwerow, oparty o biblioteke GameQ ( http://gameq.sourceforge.net/ )
  5. * Copyright 2010 by Fragles.eu
  6. * Nie zezwalam na sprzedawanie tego skryptu, o czym mowi rowniez licencja GNU
  7. *
  8. */
  9.  
  10. require_once 'GameQ.php';
  11.  
  12. // przykladowe czcionki
  13. define('TEMPESTA', 'status/fonts/tempesta.ttf');
  14. define('TAHOMA', 'status/fonts/tahoma.ttf');
  15. define('VERDANA', 'status/fonts/verdana.ttf');
  16. define('TAHOMA_BOLD', 'status/fonts/tahoma_bold.ttf');
  17.  
  18. // przyporządkowujemy zmienna do zmiennej globalnej
  19. $server = $_GET['server'];
  20. $game = $_GET['game'];
  21. $cachefile = "./cache/server_".$_SERVER['QUERY_STRING'].$ext;
  22. $cachefile = str_replace(':', '-', $cachefile);
  23.  
  24. $cachetime = 30; //czas cache'owania
  25.  
  26. // cachowanie
  27. if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile)))
  28. {
  29. send_headers();
  30. echo file_get_contents($cachefile);
  31. }
  32. // Jesli nie podano ip lub gry
  33. if (isset($server) && !empty($server) && isset($game) && !empty($game))
  34. {
  35. // podzielenie adresu na ip oraz port
  36. list($ip, $port) = explode(":", $server);
  37.  
  38. $gq = new GameQ();
  39. // dodajemy serwer
  40. $gq->addServer('serwer', array($game, $ip, $port));
  41. $gq->setOption('timeout', 200);
  42. $gq->setFilter('normalise');
  43. $gq->setFilter('sortplayers', 'gq_ping');
  44. $results = $gq->requestData();
  45.  
  46. /**
  47. * rozpatrujemy dwa przypadki
  48. * 1 - serwer offline bo nie ma nazwy serwera
  49. * 2 - serwer online
  50. */
  51. if($results['serwer']['gq_hostname']=="")
  52. {
  53. $hostname = "Serwer OFFLINE";
  54. $players = "x";
  55. $playersmax = "x";
  56. $map = "Offline";
  57. }
  58. else
  59. {
  60. $hostname = $results['serwer']['gq_hostname'];
  61. $players = $results['serwer']['gq_numplayers'];
  62. $playersmax = $results['serwer']['gq_maxplayers'];
  63. $map = $results['serwer']['gq_mapname'];
  64. }
  65.  
  66. // utworzenie obrazka z tla
  67. $im = imagecreatefrompng("status/bg.png");
  68. // kolor bialy
  69. $white = imagecolorallocate($im, 255, 255, 255);
  70. // polaczenie informacji do jednej zmiennej
  71. $info = $server ." ". $players ." / ". $playersmax ." ". $map;
  72. // gorny rzad, nazwa serwera
  73. imagettftext($im, 7, 0, 30, 10, $white, VERDANA, $hostname);
  74. // dolny rzad, ip serwera, gracze, mapa
  75. imagettftext($im, 7, 0, 30, 21, $white, VERDANA, $info);
  76.  
  77. // nie podano adresu w zmiennej $_GET
  78. } else {
  79. $im = imagecreatefrompng("status/background.png");
  80. $white = imagecolorallocate($im, 255, 255, 255);
  81. $info = "xx.xxx.xxx:xxxxx xx / xx OFFLINE";
  82. imagettftext($im, 7, 0, 30, 10, $white, VERDANA, "Serwer OFFLINE");
  83. imagettftext($im, 7, 0, 30, 21, $white, VERDANA, $info);
  84. }
  85.  
  86. function send_headers() {
  87. global $config;
  88. if($ext == '.png') {
  89. header ('Content-type: image/png');
  90. } else {
  91. header ('Content-type: image/jpeg');
  92. }
  93. }
  94.  
  95. // okreslenie typu zawartosci
  96. header('Content-type: image/png');
  97. imagepng($im);
  98. imagedestroy($im);
  99. $fp = fopen($cachefile, 'wb');
  100. fclose($fp);
  101. ?>


refresh

Ten post edytował Duo 16.11.2010, 21:44:46
Go to the top of the page
+Quote Post
CuteOne
post 18.11.2010, 17:25:11
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


jeżeli cachujesz obrazek i chcesz go wyświetlić:
  1. echo '<img src="'.$cachefile.'">';

zamiast
  1. send_headers();
  2. echo file_get_contents($cachefile);


Ten post edytował CuteOne 18.11.2010, 17:25:48
Go to the top of the page
+Quote Post
Duo
post 19.11.2010, 17:22:24
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


teraz po odświeżeniu statusu pojawia się taki błąd
  1. Warning: Cannot modify header information - headers already sent by (output started at /home/u0068/domains/efrags.pl/public_html/status/index.php:30) in /home/u0068/domains/efrags.pl/public_html/status/index.php on line 96
  2. &#65533;PNG  ��� IHDR��h������X������IDATx��\w`T��?s�n6 $BB�4A���"�E� �h��%�!/R�D�E"AA


Go to the top of the page
+Quote Post
CuteOne
post 19.11.2010, 20:40:08
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


bez headera.... następnym razem wrzuć błąd w google i sam zobacz co on oznacza smile.gif
Go to the top of the page
+Quote Post
Duo
post 19.11.2010, 21:41:13
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


teraz wyświetla mi się takie coś po odświeżeniu, dodam tylko tyle, że w folderze cache zapisują się pliki ale nie są one obrazkami zajmują po 0 kb i są puste (cały kod się nie mieści, więc wkleiłem fragment)

Kod
�PNG  ��� IHDR��h������X������IDATx��\w`��?�����$�J� "(��|���A�#]��&AA�@��`(�c��@|QP@Az ��J�m[f��c�lnnB���_wgΜ9sf��s�^��#y~\Bzfƨ��e�h !䃸 e(����+�3� NW }X Mv`wN�`kXe[9^Q��x�j�8U(3e(�� �ױ��>����ֳC��=�U���|aa���Hڶ-�ĺ���Q P$�M��P�2�H���v0FEW���d���-�R���f���+�Ϗ?>>~V�"���7�� L-�lY?oB�mo�g��/��S�ھu� �~~;Ln7���� �2���{oU�C{����1�c,;++//��teee�o�`k����/�@E,���-�O����^�.i���w` ��˭���L�$<�;���*���pؽ�M��a6%%oJJ��5kTgd���mVJ)c싍;w��޵��E��� >i>��^�\���?oB߱�cwD0���/�� Q�)e!�x1�h� T�֣�~#2�232Ϟ=k��e�|��1�J��K�G������T�*弟Y׫���}�r����PՈ����cB� ��^�R�GO���fV���۔e�B����?�dw��ԫ�t���0�Ͽ�kՂr��S�0�ٗ�0��ʕ�� �F�8t�o�x$��8򍡽;Ʈ�j���յ}�H]۷�X>0~ބ#'R����17k�uk���K욭Ƶ�\�f�q��� ���cBL���jW��{���F �n������}�ǚ��$�vȊz9#��f 9r�3�V��X�А�8�0�c�-  ���_T{�%� ���`�!B褨��`�l٬�q����۬��=APhw�#�J ?�E�4��f �������f�� BHfffaa����y��զ�}��ժY�IӦ!Ω��vT�k�tڻގ��J�ա�;��ͻR�1~���/t����kd V:]�( 1+-��m|Բ�I�� Z�f۾_����:e��/��{���.`3�E)�\����W�ڬ���:<��:"��Z�f�3c�l5 �� ��xDڔ��v�.F�7=&�%+߭��1�Z��k��&�
Go to the top of the page
+Quote Post
CuteOne
post 20.11.2010, 13:29:39
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


google -> zapis pliku graficznego
Go to the top of the page
+Quote Post
Duo
post 20.11.2010, 16:59:26
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


nic ciekawego na ten temat nie znalazłem
Go to the top of the page
+Quote Post
CuteOne
post 20.11.2010, 19:31:54
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


http://wortal.php.pl/Wortal/Artykuly/PHP/B...e-grafiki-w-PHP
Go to the top of the page
+Quote Post
Duo
post 21.11.2010, 02:01:55
Post #9





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

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


  1. <?php
  2. /*
  3. *
  4. * Graficzny status serwerow, oparty o biblioteke GameQ ( http://gameq.sourceforge.net/ )
  5. * Copyright 2010 by Fragles.eu
  6. * Nie zezwalam na sprzedawanie tego skryptu, o czym mowi rowniez licencja GNU
  7. *
  8. */
  9.  
  10. require_once 'GameQ.php';
  11.  
  12. // przykladowe czcionki
  13. define('TEMPESTA', 'status/fonts/tempesta.ttf');
  14. define('TAHOMA', 'status/fonts/tahoma.ttf');
  15. define('VERDANA', 'status/fonts/verdana.ttf');
  16. define('TAHOMA_BOLD', 'status/fonts/tahoma_bold.ttf');
  17.  
  18. // przyporządkowujemy zmienna do zmiennej globalnej
  19. $server = $_GET['server'];
  20. $game = $_GET['game'];
  21. $cachefile = "./cache/server_".$_SERVER['QUERY_STRING'].$ext;
  22. $cachefile = str_replace(':', '-', $cachefile);
  23. $cachetime = 30; //czas cache'owania
  24.  
  25.  
  26. // cachowanie
  27. if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile)))
  28. {
  29. $im = imagecreatefrompng('.$cachefile.');
  30. echo '<img src="'.$cachefile.'">';
  31. }
  32. // Jesli nie podano ip lub gry
  33. if (isset($server) && !empty($server) && isset($game) && !empty($game))
  34. {
  35. // podzielenie adresu na ip oraz port
  36. list($ip, $port) = explode(":", $server);
  37.  
  38. $gq = new GameQ();
  39. // dodajemy serwer
  40. $gq->addServer('serwer', array($game, $ip, $port));
  41. $gq->setOption('timeout', 200);
  42. $gq->setFilter('normalise');
  43. $gq->setFilter('sortplayers', 'gq_ping');
  44. $results = $gq->requestData();
  45.  
  46. /**
  47. * rozpatrujemy dwa przypadki
  48. * 1 - serwer offline bo nie ma nazwy serwera
  49. * 2 - serwer online
  50. */
  51. if($results['serwer']['gq_hostname']=="")
  52. {
  53. $hostname = "Serwer OFFLINE";
  54. $players = "x";
  55. $playersmax = "x";
  56. $map = "Offline";
  57. }
  58. else
  59. {
  60. $hostname = $results['serwer']['gq_hostname'];
  61. $players = $results['serwer']['gq_numplayers'];
  62. $playersmax = $results['serwer']['gq_maxplayers'];
  63. $map = $results['serwer']['gq_mapname'];
  64. }
  65.  
  66. // utworzenie obrazka z tla
  67. $im = imagecreatefrompng("status/bg.png");
  68. // kolor bialy
  69. $white = imagecolorallocate($im, 255, 255, 255);
  70. // polaczenie informacji do jednej zmiennej
  71. $info = $server ." ". $players ." / ". $playersmax ." ". $map;
  72. // gorny rzad, nazwa serwera
  73. imagettftext($im, 7, 0, 30, 10, $white, VERDANA, $hostname);
  74. // dolny rzad, ip serwera, gracze, mapa
  75. imagettftext($im, 7, 0, 30, 21, $white, VERDANA, $info);
  76.  
  77. // nie podano adresu w zmiennej $_GET
  78. } else {
  79. $im = imagecreatefrompng("status/background.png");
  80. $white = imagecolorallocate($im, 255, 255, 255);
  81. $info = "xx.xxx.xxx:xxxxx xx / xx OFFLINE";
  82. imagettftext($im, 7, 0, 30, 10, $white, VERDANA, "Serwer OFFLINE");
  83. imagettftext($im, 7, 0, 30, 21, $white, VERDANA, $info);
  84. }
  85.  
  86.  
  87.  
  88. // okreslenie typu zawartosci
  89. imagepng($im);
  90. imagedestroy($im);
  91. $fp = fopen($cachefile, 'wb');
  92. fclose($fp);
  93. ?>


nie wiem gdzie to wstawić, wstawiłem do linii 30 i nadal błąd mi pokazuje
Go to the top of the page
+Quote Post
CuteOne
post 21.11.2010, 13:16:24
Post #10





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Więc musisz się douczyć PHP lub zlecić komuś napisanie tego
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:55