Witam,
Mam problem z pobieranymi obrazkami z serwerów steam, chciałbym dodać im cacheowanie żeby nie pobierać ich co wejście na stronę bo jest ich 15 na stronie i zastanawiam się jak to zrobić, ktoś mógłby mnie jakoś nakierować? Dać jakiś przykład? Z góry dziękuję za odpowiedź
prosty skrypt który sprawdzi przed pobraniem obrazka czy istnieje on na Twoim serwerze www i sprawdzi jego date
jeśli nie spełni zdefiniowanych warunków można wykonać funkcje pobrania obrazka i zapisu go na serwerze www
(07.09.2015, 18:59)Supryk napisał(a): [ -> ]prosty skrypt który sprawdzi przed pobraniem obrazka czy istnieje on na Twoim serwerze www i sprawdzi jego date
jeśli nie spełni zdefiniowanych warunków można wykonać funkcje pobrania obrazka i zapisu go na serwerze www
Miałbyś jakieś gotowe rozwiązanie ewentualnie czy mógłbyś mi wytłumaczyć dokładniej? Jakich funkcji użyć itd.? Byłbym Ci wdzięczny
Gotowych rozwiązań nie ma, pomęcz się sam, pokaż jak wygląda Twój kod do pobierania tych obrazków
Używam steam api i następnie w pętli pobieram funkcją getAvatar dla wszystkich 15 graczy i tak pobrany avatar wyświetlam, nic z nim poza tym nie robię
Zrobiłem niby cachowanie kierując się słowami Supryka, oto mój kod:
Kod:
$avatar = getAvatar($row[0]);
if (!file_exists($avatar)) {
$file = file_get_contents($avatar);
$data = date("m.d.y", filemtime($filename));
$dir = 'cache/avatars/av_'. $miejsce .'_'. $data .'.jpg';
$loc = file_put_contents($dir, $file);
$avatar = $dir;
} else {
//$avatar = getAvatar($row[0]);
}
teraz mam pytanie, czy takie coś ma sens? Jeśli nie to prosił bym o jakieś poprawki tak aby nabrało to sensu
Dzięki wielkie
Kod PHP:
if(file_exists("nazwaa pliku avatara")&&(time()-"czas cachowania"<filemtime("nazwaa pliku avatara")))
{
// plik istnieje, czas nie jest wiekszy
$file = file_get_contents($avatar);
}
else
{
// pobieranie i zapis avatara
$avatar = getAvatar($row[0]);
$dir = 'cache/avatars';
$loc = file_put_contents($dir, $avatar);
}
nie widząc calego kodu nie pomoge, ja tak nie potrafie, zasade widzisz
Całość wygląda tak:
Kod:
$zapytanie = "SELECT * FROM `Gracze` ORDER BY Poziom DESC, Exp DESC Limit $limit OFFSET $offset";
//echo $zapytanie;
$wynik = mysql_query($zapytanie);
$informacje = array();
$miejsce = 1;
while ( $row = mysql_fetch_row($wynik) )
{
$avatar = getAvatar($row[0]);
if (!file_exists($avatar)) {
$file = file_get_contents($avatar);
$data = date("m.d.y", filemtime($filename));
$dir = 'cache/avatars/av_'. $miejsce .'_'. $data .'.jpg';
$loc = file_put_contents($dir, $file);
$avatar = $dir;
} else {
//$avatar = getAvatar($row[0]);
}
$informacje[] = array(
'Steam'=> $row[0],
'Exp'=> $row[1],
'Poziom'=> $row[2],
'Punkty'=> $row[3],
'Avatar'=> $avatar,
'Nick'=> trim(htmlspecialchars(getName($row[0]), ENT_QUOTES | ENT_HTML5)),
'Rank'=> $miejsce
);
$smarty -> assign('gracz', $informacje);
$miejsce++;
}
Później spróbuję z Twoim kodem jak to będzie wyglądać i czy będzie działać
Tak czy siak wielkie dzięki
a co zwraca funkcja getAvatar()?
pokaż ją też, nadal dajesz mi wycinek bo nie wiem co wkladasz w tą funkcje
GetAvatar zwraca dokładnie to:
Kod:
https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/95/9507f03ad46ddf009806a056dca31dc373b60940_medium.jpg
Bezpośredni link do avataru ze steam
(07.09.2015, 21:28)Supryk napisał(a): [ -> ]a co zwraca funkcja getAvatar()?
pokaż ją też, nadal dajesz mi wycinek bo nie wiem co wkladasz w tą funkcje
Dzięki serdeczne za zainteresowanie tematem, użyłem Twojego kodu i wszystko działa jak należy
Jeszcze raz dzięki!
Obecnie wygląda to tak:
Kod:
// Pobieram ścieżkę pliku i wyciągam nazwę obrazka
$avatar = getAvatar($row[0]);
$plik = basename($avatar);
// Jeden dzień cache, 3600= 1 godz
if(file_exists($plik)&&(time()-"3600"<filemtime($plik)))
{
// plik istnieje, czas nie jest wiekszy
$file = file_get_contents(getAvatar($row[0]));
}
else
{
// pobieranie i zapis avatara
$dir = 'cache/avatar/'. $plik;
$file = file_get_contents(getAvatar($row[0]));
file_put_contents($dir, $file);
$avatar = $dir;
}
Czas cache to godzina, nie wiem czy to odpowiedni czas ale chyba wystarczający
to raczej nie ma sensu bo mniemam iż
get avatar pobiera avatary ze steama, a ta funkcja jest nad warunkiem i wykonuje sie caly czas
Muszę pobrać avatar żeby sprawdzić nazwę pliku, może masz rację że to nie ma sensu...
Coś można na to poradzić?