![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 5.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dzieńdobry (IMG:style_emoticons/default/smile.gif)
Mam na swojej stronie dwa guziki: uruchom i zatrzymaj. Chciałem zrobić tak, aby po wciśnięciu guzika uruchom zaczęła wykonywać się pętla while, której warunkiem zatrzymania miało by być wciśnięcie klawisza zatrzymaj. Chciałem to zrobić na takiej zasadzie, że po wcisnieciu buttona zatrzymaj ustawi się w nim zmienna logiczna $stop na true i pętla while sie zatrzyma jeżeli $stop jest inne niż false. Oto kod którym próbowałem to zrobić
Ale mi to nie działa i coś mi się wydaje, że takie coś nie ma prawa działać. Jak wykonać takie zatrzymanie pętli? Pomocy (IMG:style_emoticons/default/sad.gif) Ten post edytował mix091 5.12.2015, 23:46:27 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 1 Dołączył: 22.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
chyba nie w php
możesz ew w js napisać funkcje która będzie odświeżać plik .php i zatrzymać ją przyciskiem |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 5.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
Ale tu też pojawia się pytanie, jak zatrzymać funkcję js przyciskiem?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 345 Pomógł: 3 Dołączył: 31.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Raczej w taki sam sposób, tylko zamiast isset $_post robisz sobie onClick do przycisku
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Powiedz mi jak chcesz zatrzymać pętle w PHP która trwa zwykle szybciej niż kliknięcie przycisku? Nawet jakby się dało. Kliknięcie musiałoby powodować na serwerze polecenie kill process, a do tego PHP nie ma dostępu. Wykonanie polecenia dzieje się po stronie serwera.
Nawet przez JS nie zrobi się czegoś takiego. Chyba ze JS będzie przetwarzał i wyniki krokowo, będzie wysyłał do skryptu PHP (która nie ma już takiej pętli.) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 5.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
Ale jeżeli dało by radę zrobić coś takiego, że js uruchamiał by mi mój skrypt w php to wtedy można by było zastąpić tą pętle while instrukcją if else. Tylko jak zrobić żeby js uruchamiał mi mój skrypt z pliku set.php? Przecież javascript działa po stronie użytkownika a skrypt php wykonuje się po stronie serwera?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 23 Dołączył: 23.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Jedyne rozwiązanie to websockety, tj. nawiązanie stałego połączenia - wtedy przeglądarka utrzymuje stałe połączenie i na bieżąco może przekazywać różne dane od klienta (w tym wypadku od przeglądarki). Wtedy musiałbyś ustawić jakąś domyślną warrtość dla warunku w pętli, a nastepnie sprawdzać, czy nowa wartość (która nadpisze domyślną) nie została dosłana.
W tej chwili operujesz na błędnym założeniu, że PHP odpala tylko jeden proces, który działa. Wydaje się Tobie, że gdy raz go odpalisz wyślesz później drugi request, to że wrócisz do wcześniej dopalonego skryptu (proesu). Tak nie jest, przy każdym requeście odpalasz nowy proces, przy każdym Twoim requeście otwiera się nowy program (proces) Ten post edytował Dejmien_85 6.12.2015, 12:44:57 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 345 Pomógł: 3 Dołączył: 31.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko zależy od tego co ma robić ta pętla jeszcze....
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 5.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko zależy od tego co ma robić ta pętla jeszcze.... Pętla jest bardzo banalna. Generalnie robię mały projekt do szkoły oparty na raspberry pi. Mój program ma wyświetlać na stronie www aktualną temperaturę w pomieszczeniu z czujnika i jeżeli wprowadzimy, że mamy dogrzać pomieszczenie np do 27*C to program ma wysłać 1 do przekaźnika, który uruchomi grzałkę i dogrzeje do tych 27*C i wyłączy. Jeżeli temperatura spadnie znowu poniżej tych 27*C(+-) to znowu ją włączy dogrzeje i się wyłączy i tak w kółko. Wygląda to aktualnie tak: (IMG:http://i.imgur.com/5Vj8wtH.jpg) Do tego właśnie była mi potrzebna ta pętla i chciałem to zrobić właśnie tak:
Ktoś wyżej pisał, że można by zrobić skrypt w js, który by uruchamiał nasz skrypt php co np. sekunde. Jeżeli można by tak zrobić to wtedy tą pętle można by zastąpić instrukcją if else, czymś takim np.
I wtedy ten skrypt był by uruchamiany co sekunde przez js i on by robił za pętle. Tylko nie wiem w ogóle czy tak też można zrobić, czy nie bardzo. Macie jakiś pomysł jak takie coś wykonać? Ten post edytował mix091 6.12.2015, 13:34:37 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 345 Pomógł: 3 Dołączył: 31.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Łooo, ja w takim razie nie czuję się dosyć kompetentny, aby doradzać w takim temacie (IMG:style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 1 Dołączył: 22.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
możesz to zrobić w samym js i jeśli temperatura jest za duża wyłączy grzałkę a jeśli za mała włączy (wyśle dane do pliku.php )
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zrób sobie oddzielne akcje (mogą być oddzielne pliki php):
grzalka-wlacz.php grzalka-temp.php Całą pętlę, aplikację, robisz w javascript, pliki PHP służą tylko do tego, aby włączyć/wyłączyć/spr temp. grzałki. Czy pętla to Twoja decyzja, ale w javascript wystarczy wtedy setInterval i np. co 30sek, sprawdzanie temperatury. Jeśli jest potrzeba sprawdzenia temperatury, ajaxem pobierasz wartość grzalka-temp.php i jak trzeba ją włączyć to wywołujesz grzalka-wlacz.php Ten post edytował Daimos 8.12.2015, 12:00:49 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zapewne to jest banalne (ale nie sprawdzone)
W pętli sprawdzasz czy
Robisz sobie w HTML przycisk z Ajax który wysyła sygnał do jakiegoś innego pliku który ustawi Ci zmienną sesyjną. W pętli powinieneś mieć wtedy przerwanie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 19:50 |