Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
|
Всем привет. У меня есть мониторинг для Minecraft, и я его хочу модернизировать сделав ему кэширование. Вроде бы всё сделал правильно, но когда в первый раз загружаешь картинку то выдаёт ошибку, а во второй раз выдаёт нормальную сохранённую картнку. Помогите пожалуйста
PHP:
скопировать код в буфер обмена
<?PHP $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"]); if($_GET['cache']==1 &@fopen("cache/$crc.png", "r")){ if(!empty($_GET['cachetime'])&is_numeric ($_GET['cachetime'])){ $reloadtime=$_GET['cachetime']; }else{ $reloadtime=60; //секунд } if ($modif<$reloadtime){ header('Content-Type: image/png'); } } //Главные переменные $IP=$_GET['ip']; }else{ echo "Не введён IP!"; } if(isset($_GET['port'])){ $Port=$_GET['port']; } $Gm=$_GET['gm']; } if(isset($_GET['text'])){ $cutext=$_GET['text']; } if(isset($_GET['style'])){ $style=$_GET['style']; }else{ $style=0; } $w=220; $h=20; $dostup=1; //Подключение к файлу который находит переменные сервера include('class/MinecraftStatus.class.php'); $Server = new MinecraftStatus("$IP", $Port); if($style==1){ $g1=$_GET['s1']; $g2=$_GET['s2']; $g3=$_GET['s3']; $g4=$_GET['s4'];} elseif($style==1 &!empty($_GET['s3'])&!empty($_GET['s4'])){ $g1=$_GET['s1']; $g2=$_GET['s2']; $g3=$_GET['s3']; $g4=$_GET['s4']; }else{ $g1='7EE248'; $g2='03B801'; $g3='FF2A2A'; $g4='E60000'; } if(empty($_GET['s3'])|empty ($_GET['s4'])){ $g3='FF2A2A'; $g4='E60000'; } //Вывод иконки if($Server->MaxPlayers){ if(empty($Gm)){$m = 'images/ics.png';}else{ if($Gm==1){$gamemode='images/ics.png';} elseif($Gm==2){$gamemode='images/ind.png';} elseif($Gm==3){$gamemode='images/surv.png';} elseif($Gm==4){$gamemode='images/null.png';} else{$gamemode='images/ics.png';} } }else{$gamemode='images/null.png';} $m = $gamemode;}else{$m = 'images/ics.png';} //Длина зелёной полосы if($Server->MaxPlayers){ $len= $Server->CurPlayers/$Server->MaxPlayers *220;} else{$len=220;} //Шрифт $font = 'font/verdana.ttf'; //Создание картинки #Градиент++ function imagecolorgradient($im, $x1, $y1, $height, $width, $up_color, $down_color) { $color0=($up_color[0]-$down_color[0])/$height; $color1=($up_color[1]-$down_color[1])/$height; $color2=($up_color[2]-$down_color[2])/$height; for ($i=0;$i<=$height;$i++) { $red=$up_color[0 ]-floor($i*$color0); $green=$up_color[1 ]-floor($i*$color1); $blue=$up_color[2 ]-floor($i*$color2); imageline($im, $y1, $x1+$i, $y1+$width, $x1+$i, $col); } } function html2rgb($color) { if ($color[0] == '#') list($r, $g, $b) = array($color[0 ].$color[1 ], $color[2].$color[3], $color[4].$color[5]); list($r, $g, $b) = array($color[0 ].$color[0 ], $color[1 ].$color[1 ], $color[2 ].$color[2 ]); else return false; return array($r, $g, $b); } $height = 20; $width = 220; if($Server->MaxPlayers){ $up_color = html2rgb($g1); $down_color = html2rgb($g2); }else{ $up_color = html2rgb($g3); $down_color = html2rgb($g4); } imagecolorgradient($im, 0, 0, $height, $width, $up_color, $down_color); #Градиент-- //Добавление иконки //прозрачность иконки //Добавление к исходной картинке полоски и иконки if($dostup==0|$dostup==2){ $len=0; } //Какой текст выводить $ctext=$cutext; }else{ $ctext=$Server->MOTD; } if($Server->MaxPlayers){ $text=$ctext .': '. $Server->CurPlayers . "/" . $Server->MaxPlayers; }else{ $text='Недоступен';} if($dostup==0){ $text='Заблокировано! dev.prominer.ru'; $g1='FF2A2A'; $g2='E60000'; $g3='FF2A2A'; $g4='E60000'; } if($dostup==2){ $text='Срок аренды истёк!'; $g1='FF2A2A'; $g2='E60000'; $g3='FF2A2A'; $g4='E60000'; } //Вычисление размеров текста и расположение его посередине $x = $box[0] + ($w / 2) - ($box[4] / 2); $y = $box[1]+3 + ($h / 2) - ($box[1] / 2); //Создание текста imagettftext($img, 9 , 0 , $x, $y, imagecolorallocate ($img, 0 , 0 , 0 ), $font,$text); //компиляция картинки header ("Content-type: image/png"); if($_GET['cache']==1){ }else{ } ?>
P.S. Без кэширования всё работает без проблем.
Если включить error_reporting(E_ALL); Ошибок так же не выдаёт(Отредактировано автором: 02 Апреля, 2013 - 12:40:56)
|