![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Siemka
potrzebuję skryptu, który po wejściu na stronę, ustawieniu kilku parametrów i godziny wykona się o tej godzinie co ustawiłem. potrzebuję prostego skryptu który się wykona jeśli użytkownik jest na stronie, nie potrzeba mi crona ani nic. od dwóch dni próbuję coś wykombinować, powstało kilka wersji kodu, ale nie działa:/ kod:
Jak to zrobić? bo nie mam już żadnego pomysłu:/ -------------------- ktoosiu
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
A co jest złego w cronie?
1. wchodzisz na stronę 2. zapisujesz dane z formularza np. do pliku 3. za każdym nowym wejściem, odczytujesz zawartość pliku, i porównujesz z aktualną datą. file_get_contents file_put_contents Ten post edytował !*! 15.07.2012, 17:46:16 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 3 Dołączył: 22.04.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
masz w tej pętli warunek -> wykonuj dopóki $cz > $t, pętla Ci się nie wykona jeśli $cz będzie się równało $t dodaj tam może >=
poza tym date() można sklecić w jedność $today = date("H:i"); po co to rozbijać? -------------------- Prywatny blog -> cupial.com.pl
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Takie porównywanie stringów nie zadziała.
-------------------- :)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 13 Dołączył: 19.06.2011 Skąd: Ruda Śląska Ostrzeżenie: (0%) ![]() ![]() |
Ja bym zapisywał linka, który ma się wykonać do pliku txt/ini z datą i dodał do indexu, że jeśli nie jest pusty, to ma pobrać url z tego pliku i uruchomić go curlem, jeśli czas (w indexie) >= czas (w pliku) [najlepiej microtime]. Po tej akcji usuwa link i datę z pliku, sprawdza dalej plik, czy nie jest pusty, jak nie jest, to czyta datę,porównuje, itd.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
@!*! nie widzę nic złego w cronie, ale skrypt potrzebuję wykonywać o różnych porach zależnie od sytuacji, i chcę żeby się wykonał np. dokładnie o 15:33, i nie potrzebuję do tego strona - wchodzę np. o 15:32, ustawiam parametry i godzinę i chwilę czekam
@peter13135 Dlaczego nie zadziała? i co w tym przypadku użyć? strcmp()? @sobol6803 w ustawieniach serwera mam maks. czas wykonywania 120s więc wydaje mi się że najlepszym rozwiązaniem jest po prostu <120s przed czasem uruchomić skrypt, i dopóki nie nastanie dana godzina będzie mieliło pętlę for, i wykona działanie Ten post edytował ktoosiu 15.07.2012, 19:17:50 -------------------- ktoosiu
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
z tego co się orientuje to jeśli porównujez dwa stringi, np. :
$string > $string2 to interpreter php rzutuje oba stringi do typu liczbowego i potem stara się je porównać. I tak string typu "9dfdws24f22" zostanie zrzutowany na liczbę 9. Jaki wynik porównania będzie gdy porównasz takie stringi : "9:29" < "9:31" ? a no będzie false, bo liczbe 9 sparsuje elegancko, ale potem parser "pomyśli sobie" ten dwukropek to nie jest liczba, dalej nie "parsuję" bo nie wiem co to jest. A jak wiadomo 9 < 9 == false. Być może jest trochę błędów w moim tłumaczeniu, bo po prostu porównywanie stringów jest po prostu bez sensu (jak jeden string może być od drugiego większy ? ) i specjalnie się nad tym nie zagłębiałem. Porównywać możesz daty w formacie uniksowego znacznika czasu, albo np. za pomocą obiektu datetime. Poza tym, ta pętla może nie wypalić, bo skrypt ma standardowo 30 sekund czasu wykonywania - potem się przerywa. Oczywiście możesz to zmienić w php.ini -------------------- :)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wykombinowałem coś takiego
ale tak jakby omijało całe for. co robię źle? -------------------- ktoosiu
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 677 Pomógł: 89 Dołączył: 31.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wykombinowałem coś takiego (...) ale tak jakby omijało całe for. co robię źle? No bo omija, przecież to oczywiste i widać od razu dlaczego. Upierasz się przy najgłupszym możliwym rozwiązaniu, by NIE używać do tego crona. Skoro ktoś ma czekać minutę czy dwie na stronie, po co w ogóle coś takiego robić? Nie może wejść na stronę po tych dwóch minutach i "od ręki" wykonać owego "zaplanowanego" zadania? -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Nie da się wykonać czegoś o danej godzienie chyba że jakiś użytkownik na niej będzie co do minuty, ja kiedyś coś takiego miałem to kod wykonywał się u pierwszej osoby która najbliżej tej godziny weszła na stronę.
Wystarczy porównać 9.30 == 9.30 { to co ma wykonać } A jeśłi nikogo nie będdzie o 9.30 to kod wykona się u osoby pierwszej która wejdzie na stronę po 9.30. Ten post edytował GoOx 16.07.2012, 06:48:14 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
No bo omija, przecież to oczywiste i widać od razu dlaczego. Upierasz się przy najgłupszym możliwym rozwiązaniu, by NIE używać do tego crona. Skoro ktoś ma czekać minutę czy dwie na stronie, po co w ogóle coś takiego robić? Nie może wejść na stronę po tych dwóch minutach i "od ręki" wykonać owego "zaplanowanego" zadania? Nie mogę wejść na stronę i wykonać od ręki, bo potrzebuję to wykonać z dokładnością co do sekundy (np. dokładnie o 18:00:00), a crona nie chcę używać, bo zadanie które potrzebuję wykonać nie jest cykliczne - raz może być we wtorek o 18, innym razem w czwartek o 15, i musiałbym za każdym razem tworzyć nowe zadanie cron @GoOx wiem o tym i napisałem wcześniej, widocznie zbyt niejasno więc napiszę jeszcze raz: zadanie ma się wykonywać jak JA wejdę na stronę minutę przed zadanym czasem i ustawie parametry, cały czas będąc na stronie, i nie mogę sobie poradzić z kodem Ten post edytował ktoosiu 16.07.2012, 13:33:54 -------------------- ktoosiu
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Odpowiedź jest prosta użyj takiego kodu:
Dobrze Ciebie zrozumiałem? Ten post edytował GoOx 16.07.2012, 12:58:48 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 677 Pomógł: 89 Dołączył: 31.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
(...) a crona nie chcę używać, bo zadanie które potrzebuję wykonać nie jest cykliczne - raz może być we wtorek o 18, innym razem w czwartek o 15, i musiałbym za każdym razem tworzyć nowe zadanie cron Nic bardziej mylnego. Wystarczy jedno zadanie cron - odpalanie skryptu co minutę. Skryptu, który zawiera w sobie pętlę trwającą 60 sekund... -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli nie przeszkadza Ci wejście na stronę np minutę przed czasem , i nie chcesz użyć CRON możesz zrobić kod w JavaScript który będzie odliczał do godziny xx:yy:00 i gdy odliczanie się skończy wyśle żądanie ajaxem.
-------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
@d3ut3r słabo znam js+ajax
@GoOx tak właśnie robię, tyle że do tego jeszcze trzeba pętli, a ja nie mogę sobie poradzić ze sformułowaniem kodu tej pętli -------------------- ktoosiu
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
A ja zapytam bo mnie ciekawość zżera... Po co robisz to w ten sposób i konkretnie co? To jest jakiś system wiadomości, gra, zmiana tapety?
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 22 Dołączył: 22.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Bez ustalenia OKRESU czasu ( np. od 12:00 do 12:05 ) ni da rady. W innym wypadku ktoś musiałby wejść co do sekundy ( bądź nawet setnej sekundy )
Ten post edytował Shido 16.07.2012, 14:25:45 -------------------- Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
tak na szybko:
Tylko, że takie długie ładownie może spowodować wyświetlenie monitu w przeglądarce "Strona nie odpowiada...." @UP zgadza się, autor sam powiedział, że może wchodzić minutę przed czasem, takie rozwiązanie wówczas zadziała. Jeżeli już miałbym unikać cron to zrobiłbym to ajaxem skoro i tak na stronę muszę wejść, takie sztuczne opóźnianie skryptu, może wkurzyć .... co do tego można zrobić dodatkową granicę:
i powinno działać Ten post edytował d3ut3r 16.07.2012, 14:30:18 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
No to może tak: zrób tabelę w mysql z dwoma polami: data|wykonano. Data - data w unixtime, wykonano - 0. Przy każdym wejściu na stronę skrypt niech pobiera zadanie które ma wykonano=0 i data<=time(), po wykonaniu skrypt zmienia wykonano na 1. To ma taką wadę, że jak zdanie ma się wykonać np. o 15:00:00 to musisz wejść na stronę o 14:59 i odświeżać cały czas stronę. ;p Albo dać w html refresh żeby się sama odświeżała co sekundę.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 13 Dołączył: 19.06.2011 Skąd: Ruda Śląska Ostrzeżenie: (0%) ![]() ![]() |
No to może tak: zrób tabelę w mysql z dwoma polami: data|wykonano. Data - data w unixtime, wykonano - 0. Przy każdym wejściu na stronę skrypt niech pobiera zadanie które ma wykonano=0 i data<=time(), po wykonaniu skrypt zmienia wykonano na 1. To ma taką wadę, że jak zdanie ma się wykonać np. o 15:00:00 to musisz wejść na stronę o 14:59 i odświeżać cały czas stronę. ;p Albo dać w html refresh żeby się sama odświeżała co sekundę. Inaczej. Zapisujesz do tabeli "cron": Kod id | date | link | done | 1 | 16-07-12 15:23 | http://strona.pl/strona.php?wykonaj=tak | 1 | 2 | 16-07-12 18:41 | http://strona.pl/strona.php?do=kill | 0 | I w indexie czytasz, czy w bazie są jakieś wpisy:
Jeśli mysql_num_rows >0 (czy tam $PDO->rowCount() > 0) to pobierasz link i datę z bazy, rozbijasz sobie na zmienne "$day", "$month", "$year", "$hour", "$minute"). Później generujesz czas jaki jest w chwili wykonywania skryptu i tak samo go rozdzielasz na zmienne. Porównujesz wszystkie zmienne:
Ten post edytował sobol6803 16.07.2012, 15:51:45 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 17:17 |