Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt PHP uruchamiający samego siebie
Forum PHP.pl > Forum > PHP
rudolf35
Witam,

Szukam rozwiązania problemu związanego z limitem wykonania się skryptu na moim hostingu. Napisałem skrypt, który aktualizuje stany i ceny w moim sklepie internetowym, według danych z pliku xml hurtowni i jest uruchamiany przez CRONA. Problem polega na tym, że hosting na którym postawiony jest sklep, ma limit wykonania się skryptu, ustawiony na 1 minutę, a produktów jest kilkanaście tysięcy. Próbuję wymyślić obejście tego limitu i wpadłem na pomysł, aby skrypt aktualizował towary porcjami, czyli aktualizuje określoną porcję towarów i przed zakończeniem działania uruchamia siebie samego z odpowiednimi parametrami i aktualizuje kolejną porcję. Chciałbym tylko prosić o podpowiedź jakiej funkcji użyć do uruchomienia tego skryptu drugi raz. Musi ona działać w ten sposób, że podczas uruchomienia tej funkcji, skrypt nie będzie już czekał na zakończenie jej działania, tylko zakończy swoją pracę.

Mam nadzieję, że wytłumaczyłem mój problem dostatecznie dobrze.



sowiq
Jeśli z poziomu skryptu PHP (A) uruchomisz inny skrypt (B), to tak czy siak (A) będzie czekał na zakończenie pracy (B).

Podstawowe pytanie - zadanie uruchamiasz z wiersza poleceń, czy po http (np. za pomocą wget)? Bo limit czasu wykonywania tyczy się tylko skryptów uruchamianych po http, chyba że admin Twojego serwera wymyślił jakieś udziwnienie...
rudolf35
Skrypt jest uruchamiany po http, bo jest częścią aplikacji napisanej w Zendzie, więc najłatwiej mi było go uruchomić w ten sposób. jeśli faktycznie limit tyczy się z reguły tylko skryptów uruchamianych po http, to jest już dla mnie jakiś trop. W takim razie będę eksperymentował nad uruchomieniem skryptu z wiersza poleceń.
zegarek84
Cytat(sowiq @ 31.12.2013, 14:26:23 ) *
Jeśli z poziomu skryptu PHP (A) uruchomisz inny skrypt (B), to tak czy siak (A) będzie czekał na zakończenie pracy (B).

to zależy gdyż nie musi ;]

oprócz tych tricków są też różne zaawansowane cronweby gdzie zadania możesz uruchamiać częściej niż co 5 min bazujące na wywołaniu http gdyż są na innych serwerach - poszukaj w google

[php]Kilka procesów jednocześnie
Uruchamianie skryptu php "w tle"
Przekazywanie obiektu COM, Przekazywanie obiektu COM między wywołaniami strony
[php] Skrypt działający non stop, gentoo
[wolontariat]wykonywanie 2 akcji po kliknięciu na button
uruchamianie pliku php co 30s bez właczonego kompa - na serwie
PHP uruchomienie procedury składowanej bez czekania na resultat
sowiq
Skoro Zend, to nie ma żadnego problemu żeby odpalać Twoje zadanie z poziomu konsoli.
https://www.google.pl/search?q=zend+run+action+from+console ==>> http://stackoverflow.com/questions/2325338...om-command-line

Cytat(rudolf35 @ 31.12.2013, 14:47:05 ) *
jeśli faktycznie limit tyczy się z reguły tylko skryptów uruchamianych po http, to jest już dla mnie jakiś trop

Trop jest bardzo prosty - Twój skrypt nie wyrabia smile.gif Bierz mniejsze porcje danych, ale uruchamiaj (w miarę możliwości) swoje zadanie w mniejszych odstępach czasu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.