![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam skrypt, który za pomocą Crona co godzinę zapisuje mi pewne dane do pliku razem z aktualną datą i godziną.
Jednak zawsze coś może się zdarzyć i serwer może nie działać. Na przykładzie widać, że brakuje zapisu z godziny 3 i 4. Gdy serwer znów zacznie działać jak wykryć przy pomocy PHP brak tych zapisów i uzupełnić je razem z treścią "błąd" tak jak na drugim przykładzie? Kod 09.07.2011, 00:00, treść 09.07.2011, 01:00, treść 09.07.2011, 02:00, treść 09.07.2011, 05:00, treść 09.07.2011, 06:00, treść itd... Kod 09.07.2011, 00:00, treść
09.07.2011, 01:00, treść 09.07.2011, 02:00, treść 09.07.2011, 03:00, błąd 09.07.2011, 04:00, błąd 09.07.2011, 05:00, treść 09.07.2011, 06:00, treść itd... |
|
|
![]()
Post
#2
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
A nie możesz po prostu przy dodawaniu kolejnego rekordu sprawdzać, czy poprzedni jest o jeden mniejszy? I jeżeli nie, to sprawdzać do momentu aż będzie i dopiero zacząć kolejny uzupełnianie? Chyba, że coś mi umyka (IMG:style_emoticons/default/smile.gif) .
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Przecież kolega nie dodaje tego do bazy tylko do plików, więc skąd mowa o rekordach ?!
Moim zdaniem najprościej byłoby podzielić explodem zawartość całego pliku według znaków końca linii. To da Ci każdy wpis w oddzielnym elemencie tablicy. Następnie każdy z nich dzielisz względem przecinka i sprawdzasz czy $element[1] z danej linii jest większy o 1 od poprzedniego. PS. A tak na marginesie to bazą danych byłoby zdecydowanie łatwiej to rozwiązać. Ten post edytował sadistic_son 9.07.2011, 12:28:23 |
|
|
![]()
Post
#4
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Rekord rozumiany jako wpis. Serio, czy to było nie do wyłapania? Bez przesady. Pytanie było raczej teoretyczne (algorytmiczne), zważywszy na brak jakiegokolwiek kodu.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem najprościej byłoby podzielić explodem zawartość całego pliku według znaków końca linii. To da Ci każdy wpis w oddzielnym elemencie tablicy. Równie dobrze możesz wczytać poprzez file chyba, że się mylę? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
Jak kolega wyżej, explode zdziała cuda ;p
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Moim zdaniem najprościej byłoby podzielić explodem zawartość całego pliku według znaków końca linii. To da Ci każdy wpis w oddzielnym elemencie tablicy. Cytat Jak kolega wyżej, explode zdziała cuda ;p Zajrzałem do manuala, ale i tak sobie z tym nie radze. (IMG:style_emoticons/default/sadsmiley02.gif) Mógłbyś mi pokazać taki cud? (IMG:style_emoticons/default/snitch.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
$linia = explode("\n", $plik);
wpisuje do zmiennej każdą nową linię jako $linia[0,1,2,3] itd. explode służy poniekąd do znajdowania (IMG:style_emoticons/default/wink.gif) Ten post edytował toaspzoo 10.07.2011, 17:01:43 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Następnie każdy z nich dzielisz względem przecinka i sprawdzasz czy $element[1] z danej linii jest większy o 1 od poprzedniego. Teoretycznie tak chciałem zrobić. Jednak choć prawdopodobieństwo wystąpienia takiego scenariusza jest dość małe trzeba wziąć pod uwagę, że skrypt uruchomi się o północy i wtedy nie będzie miał poprzedniego elementu mniejszego tylko większego. Co wtedy zrobić? |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Skrypt odpalany sobiesprawdza ostatnia linijkę i według niej decyduje co robić. Złapie, że ostatnia linijka wykonana wiecej niż godzinę temu to dopisze brakujące z errorem.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze jedno pytanie. Jak za pomocą warunku if sprawdzić czy zmienna 1 jest większa o 1 od zmiennej 2?
Ten post edytował Szunaj85 11.07.2011, 13:41:19 |
|
|
![]()
Post
#12
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Nawet najgłupszym sposobem: jeżeli ($zmienna1 -1 == $zmienna2) ?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Nie podał szczegółów co do jednostek (IMG:style_emoticons/default/smile.gif) .
|
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Fifi... Nie bądźmy upierdliwi. Wystarczy, że porównałby godzinę samą, bez minut i nie byłoby problemu. Nie twórzmy problemów na siłe (IMG:style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie podał szczegółów co do jednostek smile.gif. Czas rozłożyłem na czynniki pierwsze. Dlatego nie muszę się martwić o taką sytuację jaką podał Fifi209. Jednak dziękuję za czujność. Chciałbym się jeszcze zapytać jak zrobić coś takiego. Cały czas bazuje na poniższym przykładzie. Kod 09.07.2011, 00:00, treść Jak skrypt wykryje, że brakuje poprzedniej godziny to oblicza jaka jest ilość brakujących godzin (różnica między aktualną a zapisaną godziną) i tą ilość zapisze do zmiennej. Z tym raczej nie będzie problemu...09.07.2011, 01:00, treść 09.07.2011, 02:00, treść 09.07.2011, 03:00, błąd 09.07.2011, 04:00, błąd 09.07.2011, 05:00, treść 09.07.2011, 06:00, treść itd... Poniżej mam skrypt, który wyświetla tekst tyle razy ile wynosi zmienna. Załóżmy, że skrypt wykonuje się o godzinie 5. Wykrył, że ostatnia zapisana godzina to 2. Jak w tej pętli w tekście zamiast "00:00" wpisać poprzednią godzinę i jeszcze poprzednią czyli 3 i 4 żeby wynik wynosił... Kod 09.07.2011, 03:00, błąd Oczywiście wszystko musi zależeć od tego ile wynosi zmienna.
09.07.2011, 04:00, błąd Ten post edytował Szunaj85 12.07.2011, 10:01:34 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Fifi... Nie bądźmy upierdliwi. Wystarczy, że porównałby godzinę samą, bez minut i nie byłoby problemu. Nie twórzmy problemów na siłe (IMG:style_emoticons/default/biggrin.gif) Skoro autor zapytał to pewnie nie wiedział, skoro Daiquiri daje "rozwiązanie" to niech daje takie, które pomoże autorowi. Bo tyle to i sam autor mógł wymyślić i pewnie by nie pytał. @edit Poza tym, 00:00 - 01:00, to nie jest -01:00 Ten post edytował Fifi209 12.07.2011, 10:55:52 |
|
|
![]()
Post
#18
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Fifi209, tworzysz problemy których nie ma. Uważam, że każdy kto szuka pomocy, powinien jak najdokładniej opisać swój problem. Im mniejsza dokładność w opisie problemu - tym bardziej ogólnikowe rozwiązanie. Autor nie wrzucił listingu z tego, w jaki sposób zaaranżował zbieranie danych. Jasne, że w grę może wchodzić dodatkowy zestaw warunków, ale to chyba już leży w gestii osoby, która bawi się w kodowanie. Z mojej strony to tyle, na temat tworzącego się OT.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pomoże mi ktoś z moim nie rozwiązanym problemem? (IMG:style_emoticons/default/co_jest.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 04:36 |