Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP GD и Кэширование

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите с проблемой
Dinir102
Отправлено: 02 Апреля, 2013 - 12:09:59
Post Id



Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Всем привет. У меня есть мониторинг для Minecraft, и я его хочу модернизировать сделав ему кэширование. Вроде бы всё сделал правильно, но когда в первый раз загружаешь картинку то выдаёт ошибку, а во второй раз выдаёт нормальную сохранённую картнку. Помогите пожалуйста
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $crc=md5("ip=".$_GET["ip"]."&port=".$_GET["port"]."&style=".$_GET["style"]."&gm=".$_GET["gm"]."&s1=".$_GET["s1"]."&s2=".$_GET["s2"]."&s3=".$_GET["s3"]."&s4=".$_GET["s4"]."&text=".$_GET["text"]);
  4.  
  5. if($_GET['cache']==1&@fopen("cache/$crc.png", "r")){
  6.  
  7. if(!empty($_GET['cachetime'])&is_numeric($_GET['cachetime'])){
  8. $reloadtime=$_GET['cachetime'];
  9. }else{
  10. $reloadtime=60; //секунд
  11. }
  12.  
  13. $modif=time()-@filemtime ("cache/$crc.png");
  14. if ($modif<$reloadtime){
  15. $img=imagecreatefrompng("cache/$crc.png");
  16. header('Content-Type: image/png');
  17. imagepng($img);
  18. exit();
  19. }
  20.  
  21. }
  22.  
  23. //Главные переменные
  24. if(isset($_GET['ip'])){
  25. $IP=$_GET['ip'];
  26. }else{
  27. echo "Не введён IP!";
  28. }
  29. if(isset($_GET['port'])){
  30. $Port=$_GET['port'];
  31. }
  32. if(isset($_GET['gm'])){
  33. $Gm=$_GET['gm'];
  34. }
  35. if(isset($_GET['text'])){
  36. $cutext=$_GET['text'];
  37. }
  38. if(isset($_GET['style'])){
  39. $style=$_GET['style'];
  40. }else{
  41. $style=0;
  42. }
  43. $w=220;
  44. $h=20;
  45. $dostup=1;
  46.  
  47. //Подключение к файлу который находит переменные сервера
  48. include('class/MinecraftStatus.class.php');
  49. $Server = new MinecraftStatus("$IP", $Port);
  50.  
  51.  
  52. if($style==1){
  53. $g1=$_GET['s1'];
  54. $g2=$_GET['s2'];
  55. $g3=$_GET['s3'];
  56. $g4=$_GET['s4'];}
  57. elseif($style==1&!empty($_GET['s3'])&!empty($_GET['s4'])){
  58. $g1=$_GET['s1'];
  59. $g2=$_GET['s2'];
  60. $g3=$_GET['s3'];
  61. $g4=$_GET['s4'];
  62. }else{
  63. $g1='7EE248';
  64. $g2='03B801';
  65. $g3='FF2A2A';
  66. $g4='E60000';
  67. }
  68. if(empty($_GET['s3'])|empty($_GET['s4'])){
  69. $g3='FF2A2A';
  70. $g4='E60000';
  71. }
  72.  
  73. //Вывод иконки
  74. if($Server->MaxPlayers){
  75. if(empty($Gm)){$m = 'images/ics.png';}else{
  76. if($Gm==1){$gamemode='images/ics.png';}
  77. elseif($Gm==2){$gamemode='images/ind.png';}
  78. elseif($Gm==3){$gamemode='images/surv.png';}
  79. elseif($Gm==4){$gamemode='images/null.png';}
  80. else{$gamemode='images/ics.png';}
  81. }
  82. }else{$gamemode='images/null.png';}
  83. if(isset($gamemode)){
  84. $m = $gamemode;}else{$m = 'images/ics.png';}
  85.  
  86. //Длина зелёной полосы
  87. if($Server->MaxPlayers){
  88. $len= $Server->CurPlayers/$Server->MaxPlayers *220;}
  89. else{$len=220;}
  90.  
  91. //Шрифт
  92. $font = 'font/verdana.ttf';
  93.  
  94. //Создание картинки
  95. $img = imagecreate($w, $h);
  96. $bg = imagecolorallocate ($img, 238, 238, 238);
  97.  
  98. #Градиент++
  99. function imagecolorgradient($im, $x1, $y1, $height, $width,
  100.     $up_color, $down_color)
  101. {
  102.     $color0=($up_color[0]-$down_color[0])/$height;
  103.     $color1=($up_color[1]-$down_color[1])/$height;
  104.     $color2=($up_color[2]-$down_color[2])/$height;
  105.     for ($i=0;$i<=$height;$i++)
  106.     {
  107.         $red=$up_color[0]-floor($i*$color0);
  108.         $green=$up_color[1]-floor($i*$color1);
  109.         $blue=$up_color[2]-floor($i*$color2);
  110.         $col= imagecolorallocate($im, $red, $green, $blue);
  111.         imageline($im, $y1, $x1+$i, $y1+$width, $x1+$i, $col);
  112.     }
  113. }
  114.  
  115. function html2rgb($color)
  116. {
  117.     if ($color[0] == '#')
  118.         $color = substr($color, 1);
  119.  
  120.     if (strlen($color) == 6)
  121.         list($r, $g, $b) = array($color[0].$color[1],
  122.                                  $color[2].$color[3],
  123.                                  $color[4].$color[5]);
  124.     elseif (strlen($color) == 3)
  125.         list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
  126.     else
  127.         return false;
  128.  
  129.     $r = hexdec($r); $g = hexdec($g); $b = hexdec($b);
  130.  
  131.     return array($r, $g, $b);
  132. }
  133.  
  134. $height = 20;
  135. $width = 220;
  136. if($Server->MaxPlayers){
  137. $up_color = html2rgb($g1);
  138. $down_color = html2rgb($g2);
  139. }else{
  140. $up_color = html2rgb($g3);
  141. $down_color = html2rgb($g4);
  142. }
  143.  
  144. $im = imagecreatetruecolor($width, $height);
  145. imagecolorgradient($im, 0, 0, $height, $width, $up_color, $down_color);  
  146. #Градиент--
  147.  
  148. //Добавление иконки
  149. $src = imagecreatefrompng($m);
  150. $trans = imagecolorat($src,0,0);
  151. //прозрачность иконки
  152. imagecolortransparent($src,$trans);
  153. //Добавление к исходной картинке полоски и иконки
  154. if($dostup==0|$dostup==2){
  155. $len=0;
  156. }
  157. imagecopy($img, $im, 0, 0, 0, 0, $len, 20);
  158. imagecopy($img, $src, 4, 2.5, 0, 0, 15, 15);
  159.  
  160. //Какой текст выводить
  161. if(!empty($cutext)){
  162. $ctext=$cutext;
  163. }else{
  164. $ctext=$Server->MOTD;
  165. }
  166.  
  167. if($Server->MaxPlayers){
  168. $text=$ctext .': '. $Server->CurPlayers . "/" . $Server->MaxPlayers;
  169. }else{
  170. $text='Недоступен';}
  171.  
  172. if($dostup==0){
  173. $text='Заблокировано! dev.prominer.ru';
  174. $g1='FF2A2A';
  175. $g2='E60000';
  176. $g3='FF2A2A';
  177. $g4='E60000';
  178. }
  179. if($dostup==2){
  180. $text='Срок аренды истёк!';
  181. $g1='FF2A2A';
  182. $g2='E60000';
  183. $g3='FF2A2A';
  184. $g4='E60000';
  185. }
  186.  
  187. //Вычисление размеров текста и расположение его посередине
  188. $box=imagettfbbox(9,0,$font,$text);
  189. $x = $box[0] + ($w / 2) - ($box[4] / 2);
  190. $y = $box[1]+3 + ($h / 2) - ($box[1] / 2);
  191. //Создание текста
  192. imagettftext($img, 9, 0, $x, $y, imagecolorallocate ($img, 0, 0, 0), $font,$text);
  193.  
  194. //компиляция картинки
  195. header ("Content-type: image/png");
  196. if($_GET['cache']==1){
  197. imagepng($img,"cache/$crc.png");
  198. }else{
  199. imagepng($img);
  200. }
  201. ?>
  202.  


P.S. Без кэширования всё работает без проблем.
Если включить error_reporting(E_ALL); Ошибок так же не выдаёт

(Отредактировано автором: 02 Апреля, 2013 - 12:40:56)

 
 Top
caballero
Отправлено: 02 Апреля, 2013 - 12:41:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
когда в первый раз загружаешь картинку то выдаёт ошибку,

так и напиши какую раз уж сам не в состоянии воспользоватся гугл-переводчиком


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Dinir102
Отправлено: 02 Апреля, 2013 - 12:44:25
Post Id



Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




caballero пишет:
Цитата:
когда в первый раз загружаешь картинку то выдаёт ошибку,

так и напиши какую раз уж сам не в состоянии воспользоватся гугл-переводчиком


Он не выводит ошибку, а просто выводит поломанную картинку (как например если выводить картинку, которой не существует)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB