Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapis obrazy z radaru do 5 minut
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam mam problem z zapisem obrazu z radaru z api ze strony wunderground.com.
Obecnie mój kod wygląda tak:
  1. <style>
  2. *{margin:0; padding:0}
  3. .foto {
  4. width:300px;
  5. height:50px;
  6. opacity: 0.6;
  7. -moz-opacity:0.6;
  8.  
  9. }
  10. .pasek {
  11. margin-top:-50px;
  12. height:621px;
  13. background-image: url(m1.png);
  14. }
  15. </style>
  16.  
  17. <?php
  18. $rozmiar = getimagesize('m1.png');
  19. echo "
  20. <div class=\"foto\">
  21. <img src=\"http://api.wunderground.com/api/api_kod/radar/image.gif?maxlat=54.575&maxlon=16.868&minlat=52.586&minlon=14.050&width=509&height=621&rainsnow=1&timelabel=1&timelabel.x=525&timelabel.y=41&reproj.automerc=1.gif?newmaps=1&timelabel=1&timelabel.y=10&num=5&delay=50\" alt=\"\">
  22. </div>
  23. <p class=\"pasek\" style=\"width:".$rozmiar[0]."px\">
  24. </p>";
  25. ?>

Wszystko po wywołaniu pliku na serwerze zapisuje się obraz z radaru z danej chwili ale chcę zrobić aby z automatu zapisywał się obraz z ostatniej godziny z odstępem co 5 minut. Wiem że muszę użyć do tego crona z serwera z hostingu ale bardziej chodzi mi o stworzenie kodu który będzie zapisywał te obrazy na serwerze ftp i w bazie danych mysql.
Moim końcowym zamiarem jest stworzyć coś takiego jak tu http://misi.ayz.pl/pogodynka/ czyli panel z godzinami gdzie można zobaczyć jak przebiegała strefa opadów itp.
Z góry dziękuję za podpowiedz.
CuteOne
1. Zapoznaj się z fwrite() lub file_put_contents(), te funkcje służą do zapisywania plików na serwerze
2. Stwórz tabelę w bazie np. fotki_pogody o takiej strukturze
id | data
3. Podczas zapisu pliku nadaj u nazwę id'ka z bazy (najpierw dodajesz wpis do bazy wink.gif ), jako data wpisz aktualną datę wraz z czasem zaokrąglonym do 5min
4. Pobierasz id obrazu odpytując bazę o plik z danego przedziału daty, i za pomocą np. file_get_contents() pobierasz plik o wskazanym id

To tak w skrócie, powodzenia smile.gif
brzanek
Dzięki za proponowane funkcje ale to co należy zrobić to ja wiem mam tylko problem jak to zrobić od strony kodu.

Zmieniłem trochę kod teraz mam tak
  1. <?php
  2. //first to specify the url
  3. $links=array(
  4. 'http://api.wunderground.com/api/api_key/radar/image.gif?maxlat=54.635&maxlon=16.963&minlat=52.536&minlon=14.018&width=800&height=888&rainsnow=1&timelabel=1&timelabel.x=525&timelabel.y=41&reproj.automerc=1.gif'
  5. );
  6. foreach ($links AS $url) {
  7. //now to retrieve it
  8. $imagedata=file_get_contents($url);
  9. //now to save it
  10. file_put_contents('image.gif',$imagedata);
  11. //and image.jpg will be in the same directory as your php file
  12. }
  13. echo '<div>Test</div';
  14. ?>

Po wywołaniu tego pliku na serwer zapisuje się plik image.gif ale bez obecnej daty. Więc każde wywołanie pliku będzie nadpisywać ten obrazek a ja tek nie chcę. Chcę aby do tej nazwy obrazka dopisywała się automatycznie data i godzina w postaci image201601160850.gif
Czy jest to do zrobienia?
casperii
Sprawdź tak:

  1. $data = date('Y-m-d');
  2. $nazwa_pliku = 'image'.$data.'.gif';
  3. file_put_contents($nazwa_pliku,$imagedata);
brzanek
Po zastosowaniu twojego rozwiązania nie zapisuje się plik z obrazem na serwerze.
casperii
zobacz jeszcze raz, edytowałem swój post.
brzanek
Tak teraz działa pięknie teraz tylko jak zrobić aby to działało na zasadzie jak tu http://misi.ayz.pl/pogodynka/ (to co jest po prawej stronie panel do przewijania i puszczania filmu z odpowiednim czasem)
Dodałem jeszcze do tego godzinę i minuty. Może nie będzie konieczne zapisywać to do bazy danych. A i jeszcze jedno jak zrobić aby po np. 100 nowych plikach były kasowane na serwerze?

Dodałem możliwość zapisywania rekordów do bazy danych. Dałem tylko id i drugie pole data
Tak wygląda teraz plik
  1. <?php
  2. $links=array(
  3. 'http://api.wunderground.com/api/api_key/radar/image.gif?maxlat=54.575&maxlon=16.868&minlat=52.586&minlon=14.050&width=509&height=621&rainsnow=1&timelabel=1&timelabel.x=525&timelabel.y=41&reproj.automerc=1.gif'
  4. );
  5.  
  6. foreach ($links AS $url) {
  7. $imagedata=file_get_contents($url);
  8. file_put_contents('image.gif',$imagedata);
  9. $data = date('Y-m-d-G-i');
  10. $nazwa_pliku = 'image'.$data.'.gif';
  11. file_put_contents($nazwa_pliku,$imagedata);
  12. include ("../warunki/db.php");
  13. $add = mysql_query("INSERT INTO radar(data) VALUES('$nazwa_pliku')");
  14. }
  15. echo '<div>Test</div';
  16. ?>

Wszystko działa poprawnie teraz tylko jak stworzyć plik aby można było odtwarzać np. ostatnie 50 rekordów na danej mapie.
Tu wygląda nałożenie radaru na moją mapę.
http://brzanek.webd.pl/radaropady/
Może nie wygląda to za ciekawie ale inaczej nie wiem jak to zastosować najlepiej było by dodać ten radar na mapę google jeśli się do.

Mam jeszcze jeden problem jak mogę automatycznie kasować te pliki z ftp starsze niż 10 dni. Jest jakiś na to sposób?
com
odpalaj crona i sprawdzaj czasy smile.gif
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.