Witajcie kiedyś już pisałem w sprawie tego problemu ale nie mogę sobie z nim poradzić. Czego powinienem użyć do wywoływania określonej funkcji co 10 sekund i by wysyłała zapytanie do bazy danych. Dokładnie ma to być pobieranie danych z innego serwera i zapisywanie ich w mojej bazie danych. Problem jest taki, że nie wiem jak to zrobić by wszystko działało bez odpalania stronki. Dopiero zaczynam z webdevelopem i w niektórych rzeczach się po prostu nie orientuję. Próbowałem setInterval z js jednak w ogóle nie wywołuje funkcji. Możecie coś doradzić w tej sprawie?
Myślałeś nad cron?
To aż trzeba z takiego demona korzystać, żeby co jakiś czas była wywoływana funkcja na serwerze? :x Wydawało mi się że jednak będzie troszkę łatwiej :x Bo tego pewnie phpem czy javą nie obsłużę
Z tego co wyczytałem minimum czasu u Crona to 5 minut więc w niczym mi on nie pomoże gdyż funkcja ma być wywoływana co 10 sekund.
Sprawdź man 1 watch
.
Możesz puścić zapętlony, "wieczny" php. set_time_limit(0)
, pętla while
z Twoim zdaniem i sleep
, do tego ignore_user_abort(1)
, co by skrypt wykonywał się w tle po próbie uruchomienia z przeglądarki i jakieś touch
na pliku "statusowym" w pętli, żeby potem porównywać datę modyfikacji pliku - jeżeli przy NOWYM uruchomieniu tego samego skryptu - data na pliku statusowym jest niestarsza jak minutę - to znaczy, że inne wywołanie skryptu już leci w tle, i nowe powinieneś zakończyć bez wchodzenia w pętlę.
Dodatkowo pasuje mieć jak zatrzymać tamtą pętlę - możesz np. sprawdzać istnienie jakiegoś pliku. Jeżeli poprzez ftp (albo inny skrypt php) skasujesz plik testowy - ta Twoja pętla się zakończy.
Rozwiązanie w Javie w Springu:
http://www.mkyong.com/spring/spring-jdk-timer-scheduler-example/
Lub z pomocą adnotacji a nie XML:
http://howtodoinjava.com/2013/04/23/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/