Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zapis obrazy z radaru do 5 minut
brzanek
post
Post #1





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


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.
Go to the top of the page
+Quote Post
CuteOne
post
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%)
-----


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

Ten post edytował CuteOne 15.01.2016, 22:44:12
Go to the top of the page
+Quote Post
brzanek
post
Post #3





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


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?

Ten post edytował brzanek 16.01.2016, 08:54:04
Go to the top of the page
+Quote Post
casperii
post
Post #4





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Sprawdź tak:

  1. $data = date('Y-m-d');
  2. $nazwa_pliku = 'image'.$data.'.gif';
  3. file_put_contents($nazwa_pliku,$imagedata);


Ten post edytował casperii 16.01.2016, 15:54:37
Go to the top of the page
+Quote Post
brzanek
post
Post #5





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Po zastosowaniu twojego rozwiązania nie zapisuje się plik z obrazem na serwerze.
Go to the top of the page
+Quote Post
casperii
post
Post #6





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


zobacz jeszcze raz, edytowałem swój post.
Go to the top of the page
+Quote Post
brzanek
post
Post #7





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


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?

Ten post edytował brzanek 17.01.2016, 16:20:39
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


odpalaj crona i sprawdzaj czasy smile.gif
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 Aktualny czas: 21.08.2025 - 06:47