Lacki2006
4.01.2017, 12:03:26
Mam problem i nie wiem jak się za to zabrać może ktoś miał by pomysł ?
Mam baze danych w której mam wpisy
id 1 = 4
id 2 = 45
id 3 = 34
id 4 - 65
itd...
Potrzebuję tak zaprogramować crona aby otwierał stronę i podstawiam do zmiennej po kolei podkładał odpowiedni parametr z id
cron zaprogramuję aby był wykonywany co 30 sekund
co 30 sekund ma otworzyć stronę podkładając do każdego otworzenia kolejną zmienną np:
1:00 - <? $pobrana_zmienna = 4 // z id 1 ?>
1:30 - <? $pobrana_zmienna = 45 // z id 2 ?>
2:00 - <? $pobrana_zmienna = 34 // z id 3 ?>
2:30 - <? $pobrana_zmienna = 65 // z id 4 ?>
itd....
Ma ktoś pomysł jak to zrobić ?
nospor
4.01.2017, 12:05:28
No to zapisuj gdzies (plik, baza) aktualnie przetworzone id.
Lacki2006
4.01.2017, 13:02:45
Też tak myślałem ale problem polega na tym że trzeba by zrobić kolumny aktualna i następna przy wykonywaniu aktualnej pobierze informacje o nastepnej tylko co w sytuacji jak trzeba nędzie jakiś wpis wykasować czyli pobranie następnej pozycji będzie nie możliwe ?
trueblue
4.01.2017, 13:08:00
Następne id to pierwsze większe id od ostatnio przetwarzanego.
lukaskolista
4.01.2017, 13:10:33
Cytat
Następne id to pierwsze większe id od ostatnio przetwarzanego.
Otóż niekoniecznie. Wyobraź sobie, że zmieniamy id numeryczne na UUID (powodów może być wiele). Czemu zmieniamy? Ponieważ istnieje taka możliwość, a skoro istnieje, to należy ją przewidzieć a do tego jest całkiem prawdopodobna.
Najlepszym pomysłem jest tutaj skorzystanie z jakiejś kolejki.
nospor
4.01.2017, 13:14:51
@lukaskolista wyobraz sobie ze spadnie ci na glowe meteoryt.A czemu spadnie? Bo istnieje taka mozliwosc. Temu siedz zawsze w bunkrze i nigdzie nie wychodz

@Lacki2006 to co trueblue napisal jest ok
Lacki2006
4.01.2017, 13:15:44
no właśnie z kolejki z której można by w razie potrzeby usunąć jakieś id w razie konieczności tylko jak to zrobić ?
lukaskolista
4.01.2017, 13:16:18
@nospor przez takie myślenie powstają aplikacje-beton, których później za nic nie mozna ruszyć i trzeba pisać na nowo. Skoro moja dotychczasowa argumentacja Wam nie wystarcza, to podam inny przykład:
mamy rekordy z id 1,2,3,4
usuwamy rekordy 2 i 3
Po usunięciu nie można już sprawdzać, czy id+1 istnieje.
Napiszę to jeszcze raz: najlepszym pomysłem na przetwarzanie potokowe jest użycie narzędzi do tego przeznaczonych, czyli kolejek.
trueblue
4.01.2017, 13:20:05
Cytat(lukaskolista @ 4.01.2017, 13:16:18 )

mamy rekordy z id 1,2,3,4
usuwamy rekordy 2 i 3
Po usunięciu nie można już sprawdzać, czy id+1 istnieje.
Jeśli usunięte zostały rekordy 2 i 3, to ostatnio przetwarzany był rekord 1 (jeśli były usunięte przed przetworzeniem, jeśli po przetworzeniu to ostatni=3). Pierwszy większy to 4.
lukaskolista
4.01.2017, 13:21:40
W takim razie źle Cię zrozumiałem, takie podejście sprawdzi sie w przypadku id numerycznych inkrementowanych.
Pyton_000
4.01.2017, 13:26:36
A nie możesz dodać kolumny z czasem uruchomienia? Wtedy pobierasz pierwszy bez daty.
Puszy
4.01.2017, 14:57:44
@nospor No niestety muszę się zgodzić z lukaskolista, jeżeli coś może wystąpić, trzeba być na to przygotowanym chociażby poprzez jedno defaultowe działanie, nie raz przez brak takiej obsługi coś się sypało. Więc zabezpieczenie się o którym wspomina lukaskolista jest wg mnie jak najbardziej "życiowe". Z drugiej strony zgodzę się z Tobą, w tym konkretnym przypadku przy założeniu że na id jest nałożony primary key wystarczy select z użyciem min i większy od ostatniego.
nospor
4.01.2017, 15:12:07
Cytat
Z drugiej strony zgodzę się z Tobą, w tym konkretnym przypadku przy założeniu że na id jest nałożony primary key wystarczy select z użyciem min i większy od ostatniego.
Ja wlasnie mowilem o tym konkretnym przypadku. nie popadajmy w paranoje i nie robmy wszystkiego by bylo przygotowane na wszystko.
Oczywiscie,sa sytuacje gdzie dobrze jest cos zrobic tak, by dalo sie to rozszerzyc latwo. Po to powstaje cala masa wzorcow by to ulatwiac, ale kurcze, nie wszedzie i nie za wszelka cene.
YAGNI naszym przyjacielem
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.