rudolf35
31.12.2013, 14:05:56
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
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).
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
31.12.2013, 14:47:05
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
31.12.2013, 14:52:12
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śnieUruchamianie 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 buttonuruchamianie pliku php co 30s bez właczonego kompa - na serwiePHP uruchomienie procedury składowanej bez czekania na resultat
sowiq
31.12.2013, 15:18:36
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-lineCytat(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

Bierz mniejsze porcje danych, ale uruchamiaj (w miarę możliwości) swoje zadanie w mniejszych odstępach czasu.