[PHP] Jak uruchomić funkcję w miejscu, w którym skończyła działanie?, Aktywacja/Kontynuacja funkcji kiedy nagle się zatrzyma z powodu błędu |
[PHP] Jak uruchomić funkcję w miejscu, w którym skończyła działanie?, Aktywacja/Kontynuacja funkcji kiedy nagle się zatrzyma z powodu błędu |
9.12.2021, 20:39:16
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 28.11.2021 Ostrzeżenie: (0%) |
Czy istnieje sposób uruchomienia do dalszej kontynuacji funkcji, która nagle zatrzymała swoje działanie w wyniku nieokreślonego błędu?
Zamierzenie jest takie: w pliku są wiersze z jakimś opisem. Każdy wiersz jest odczytywany do zmiennej, a ta z kolei do pętli. W pętli każdy wiersz kolejno jest zapisywany do innego pliku z przyklejoną dodatkową zawartością. Załóżmy, że tych wierszy jest 100, a funkcja po kolei je zapisuje i nagle zatrzymuje się na wierszu 50. Mimo wszystko chcę, aby po nieudanej próbie i zatrzymaniu funkcji na wierszu 50 funkcja przeszła do wiersza 51 i kontynuowała dalej swoje działanie. Na razie wychodzi mi, że funkcja po zatrzymaniu wraca na początek i zapisuje wszystko od nowa, ale wtedy mam zdublowane zawartości Jak ktoś miał taki problem lub zna rozwiązanie to proszę, o pomoc. Bardzo Dziękuję😊 Ten post edytował AmyLokmart 9.12.2021, 20:44:28 |
|
|
9.12.2021, 20:48:34
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 838 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Jeżeli chcesz aby zaczynać działanie funkcji (a raczej pętli) od danej pozycji, to musisz zapisywać za każdym razem pozycję tuż przed wykonaniem przetwarzania.
Następnie po próbie ponownego wykonywania polecenia, wczytaj tą pozycję i pomiń wszystkie inne pozycje jakie były przed i rozpocznij od wartości wyższej niż zatrzymany indeks pozycji. |
|
|
10.12.2021, 11:35:55
Post
#3
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 28.11.2021 Ostrzeżenie: (0%) |
W pętli jest FUNKCJA, która po kolei ma zapisywać wiersze od 1 do 100 z dodatkową zawartością i w dodatku do innego pliku. Z tego powodu nie mogę zapisywać wiersza przed wykonaniem działania funkcji, ponieważ wtedy muszę znać każdy wiersz i oddzielnie go definiować, a potem porównywać, by funkcja przeszła dalej, gdyby natrafiła na błąd i się zatrzymała. Mowa jest, o 100 wierszach dla przykładu, ale tak naprawdę mam w pliku kilkaset tysięcy wierszy i definiowanie każdego z osobna zajęłoby mi całe życie chyba
Funkcja jest w pętli z powodu powtarzalności i interpretacji kolejnych wierszy. Na razie kombinuje z metodami funkcji i pętli PHP: switch, case, break, continue. Ten post edytował AmyLokmart 10.12.2021, 11:37:11 |
|
|
10.12.2021, 11:49:00
Post
#4
|
|
Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) |
to tak jak napisał Tomplus - zapisuj gdzieś ostatnią pozycję i tyle (możesz np. sprawdzać który plik został ostatnio stworzony lub stworzyć dodatkowy plik roboczy który zapisze Ci aktualny stan pętli. Pokaż kod to łatwiej będzie rozmawiać i podrzucać najlepsze rozwiązania.
|
|
|
10.12.2021, 14:06:57
Post
#5
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 28.11.2021 Ostrzeżenie: (0%) |
Oto mój skrypt:
W kodzie chodzi, o sekcje: funkcja w pętli Funkcję w pętli testuje w osobnym pliku, aby przeprowadzić osobno uruchomienie funkcji w miejscu, w którym skończyła działanie za pomocą: switch, case, break i continue. Nie będę zapisywała osobno przed wykonaniem funkcji pozycji wiersza, ponieważ to strata czasu, a wiem że jest prosty sposób na to, bo na youtube kiedyś oglądałam filmik na ten temat i tam użytkownik pokazał jak to zrobić. Kiedy przypomniałam sobie, o tym filmiku to okazało się, że użytkownik go usunął Ten post edytował AmyLokmart 10.12.2021, 14:42:49 |
|
|
10.12.2021, 14:26:59
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Wiesz, że obsługuje tablice? -------------------- |
|
|
10.12.2021, 14:36:05
Post
#7
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 28.11.2021 Ostrzeżenie: (0%) |
Tak Wiem, ale w moim kodzie chodzi, o kolejność, której tablica nie obsługuje, a w zasadzie to sekwencji kolejności, którą dla str_replace dodatkowo trzeba byłoby wyrazić w funkcji pomocniczej a to za dużo pisania.
Nadal nie mam odpowiedzi na moje pytanie w temacie |
|
|
11.12.2021, 19:42:38
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 838 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
|
|
|
11.12.2021, 23:18:19
Post
#9
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 28.11.2021 Ostrzeżenie: (0%) |
"Tomplus" Dziękuję za podpowiedź. Niepoprawnie wywołałam funkcję saveload() i zabrakło klasy, która załaduje odpowiedni moduł z zewnętrznego skryptu (ModuleShufleGeins)
Poprawiłam kod z drobną pomocą mojego mentora Kod działa tak jak chcę, ale kodu modułu nie opublikuje, bo sama musiałam go wiele dni testować i zmieniać, aby w końcu robił to co chcę. Ci co programują dobrze wiedzą (jeśli nie kopiują gotowych rozwiązań tylko starają się samemu programować, aby zrozumieć działanie php), że to naprawdę żmudna, pracochłonna i czasochłonna zabawa w tworzenie fajnych rzeczy. Poniżej poprawiony kod:
Jeszcze raz dziękuję za podpowiedź "Tomplus" Pozdrawiam Aj. Bym Zapomniała W moim skrypcie nie chodzi, o to, aby każdą pozycję (wiersz) zapisywać oddzielnie przed działaniem funkcji zapisującej, tylko, żeby zapisywać pozycje (wiersze) do pliku w trakcie wykonywania funkcji, a jeśli natrafi ona na jakiś błąd lub się zatrzyma z powodu nieokreślonego błędu przy zapisywaniu pozycji (wiersza), to po prostu, aby wznowiła działanie do następnego wiersza z kolei. Wszystko to funkcja zapisuje do jednego pliku, a nie do 100 plików. No Chciałam tylko wyjaśnić, bo pewnie dla niektórych mój kod może być skomplikowany i niezrozumiały. Przypominam tylko, że kod, który tu przedstawiłam jest małym wycinkiem większej całości Ten post edytował AmyLokmart 11.12.2021, 23:27:09 |
|
|
13.12.2021, 16:54:15
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 838 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Stosuj odstępy w kodzie.
Ja zanim zabrałem się za stworzenie podpowiedzi przeformatowałem cały kod, aby widzieć gdzie kończą się funkcje, a gdzie zaczynają. |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 16:42 |