![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 15.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Szukam metody na uruchomienie skryptu w tle. Mam plik A, B oraz C Chciałbym zrobić aby użytkownik po wypełnieniu formularza i zapisaniu go w bazie poprzez skrypt w pliku A został przekierowany do pliku B gdzie będzie podsumowanie, w tym czasie zostanie uruchomiony skrypt w pliku C. Ale tak żeby użytkownik nadal pozostał na stronie B. Myślałem żeby wykorzystać Ajax i przesłać do pliku C jakiś parametr metodą GET lub POST np. wysyłam przez GET: parametr=on a w pliku C umieszczam:
co o tym myślicie? może jest jakieś inne rozwiązanie tego problemu? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 23 Dołączył: 1.12.2003 Ostrzeżenie: (10%) ![]() ![]() |
Jeśli w skrypcie nie ma tekstu który ma się wyświetlać to include ?
-------------------- Tani hosting - Hekko.pl | PHP 5.2/5.3/5.4/5.5/5.6 | MySQL 5.5 |
Hosting już od 49 zł rocznie! Domena pl do każdego pakietu! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 15.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie było by problemu właśnie gdyby nie to że w pliku C jest skrypt który powoli się wykonuje, około 15 sekund, więc użytkownik w tym czasie nie mógłby przeglądać strony.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 869 Pomógł: 53 Dołączył: 20.10.2003 Skąd: Przeworsk Ostrzeżenie: (0%) ![]() ![]() |
Chmm.. może curl (o ile jest możliwość zerwania połączenia, nie wiem)?
Wstawienie niewidocznej pływającej ramki byłoby uciążliwe dla odwiedzającego ze względu na status ładującej się strony. Spróbuj także wysłać zapytanie do serwera (np. cron, ale coś innego na co skrypt nie będzie musiał czekać) (patrz: shell_exec, system) jeżeli na serwerze nie masz wyłączonych tych funkcji. Najłatwiej będzie wstawić skrypt javascript do zwracanego kodu HTML, który wyśle zapytania AJAX-em o plik. W takiej sytuacji musisz jednak pamiętać o użytkownikach/botach, które nie wspierają js-a. Ten post edytował Kildyt 21.01.2011, 20:29:02 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
Ciekaw jestem co to za skrypt ktory wykonuje sie 15 sekund...
@siewca zwykle chcemy miec pewnosc ze calosc algorytmu jest wykonywana. Nalezy chyba przyjac zalozenie ze i w tym wypadku. Jezeli uzyjemy AJAX czy nawet jakiekolwiek inne wywolanie po stronie serwera tak jak sugerujsz to jaka mamy pewnosc ze C zostanie wykonane? Nalezy opracowac bufor (tabela w bazie danych) na ktory trafiaja wywołania C (rekordy) ktore sa nastepnie zciagane przez wywolania CRON i wykonywane, jezeli wykonanie sie powiedzie to mozna zdjac rekord z bufora. Wrzucanie na bufor siedzi w A lub B, Zdejmowanie w C lub w czyms co uruchamia C i sprawdza ze C się powiodło. -------------------- .:SMENTEK:.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 15.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie w pliku C jest też funkcja która zapisuje raport w bazie, czyli pomoże mi sprawdzić czy skrypt z pliku C został wykonany.
Pracuję nad wersją z wykorzystaniem parametru wysyłanego GET-em przez Ajax. Zobaczę jak będzie to śmigało ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 23 Dołączył: 1.12.2003 Ostrzeżenie: (10%) ![]() ![]() |
Ale jeśli użytkownik zamknie skrypt B to C się również nie skończy wykonywać i klops. Najlepiej oprzeć to o cronjobs.
-------------------- Tani hosting - Hekko.pl | PHP 5.2/5.3/5.4/5.5/5.6 | MySQL 5.5 |
Hosting już od 49 zł rocznie! Domena pl do każdego pakietu! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Ale jeśli użytkownik zamknie skrypt B to C się również nie skończy wykonywać i klops. Najlepiej oprzeć to o cronjobs. to, że ktoś zamyka stronę/połączenie nie musi być równoznaczne z tym, iż przerywa pracę naszego skryptu - to my o tym decydujemy...a pro po tematu - przeanalizuj fragmencik kodu:
i jeszcze może: PHP uruchomienie procedury składowanej bez czekania na resultat -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
to, że ktoś zamyka stronę/połączenie nie musi być równoznaczne z tym, iż przerywa pracę naszego skryptu - to my o tym decydujemy... Jasne ale nie chodzi o to że uda nam sie uruchomić C, chodzi o to że nie bedziemy mieli pewnosci ze C sie powiodlo. Co bedzie jezeli pomiedzy wywolaniem procedury a zakonczeniem wykonania C pan Mietek wyciagnie wtyczke z serwera i wszystko zdechnie w polowie zadania (przypominam ze mowimy o 15 sekundach dla wykonania programu to jest cała epoka)? Co w takim wypadku ponownie wywola C? W przypadku bufora z taskami zdejmowanymi przez CRON, mozna zamiescic w jednej tranaskcji zdejmowanie tasku i te operacje ktore robi C. Dzieki czemu mamy absolutna pewnosc ze C zostanie wykonane i ze nie zostanie wykonane parokrotnie. Oczywisice pod warunkiem ze C nie jest wywolywaniem żądania do jakiejs zdalnej uslugi, ktora nie daje potwierdzenia ze zostala wykonana z powodzeniem, ale to juz inna bajka... Ten post edytował smentek 23.01.2011, 18:28:31 -------------------- .:SMENTEK:.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.05.2025 - 07:44 |