Uruchomienie skryptu z pomoc

Potrzebujesz pomocy z C, C++, perl, python, itp.
mrblack
Posty: 1
Rejestracja: 27 września 2011, 09:26

Uruchomienie skryptu z pomocą programu sreen

Post autor: mrblack »

Witam!

Mam pewien skrypt php, który co 15 sekund ma pobierać dane z bazy mysql z innego serwera. Uruchamiany jest na wersji 6.0.2 Debiana.

Z racji, iż z crona nie mogę ustawić, uruchamiania częściej niż co jedna minuta. Umieściłem skrypt aby był uruchamiany przez program screen.

Działa on w pętli while(1) z opóźnieniem 15 sekund po odczytaniu bazy. Zmienna php czasu skryptu jest ustawiona na 0.

I tu pojawia się problem, bo z założenia skrypt ma działać wiecznie. Niestety z niewiadomych przyczyn proces screena ginie.
W logach nie mogę nic znaleźć, dlaczego tak się dzieje. Podejrzewam, iż to ustawienia screena są odpowiedzialne, bo pomijając sam skrypt php (nawet jak się usunie) to screen powinien działać dalej.

Proszę o pomoc w rozwiązaniu mojego problemu.

Pozdrawiam

mrblack
Awatar użytkownika
VMLine
Beginner
Posty: 137
Rejestracja: 28 lutego 2011, 08:44
Lokalizacja: Poznań / Słupsk

Post autor: VMLine »

To na pewno nie ustawienia screena, bo on sobie 'wisi' do póki go nie zakończysz, albo aplikacja się nie zakończy. Tak więc odpowiedzialny jest skrypt php. Sprawdź ustawienia php.ini, a dokładnie:

Kod: Zaznacz cały

php -i | grep max_execution_time
Powinno wskazywać 0 (bez limitu). Jeżeli jest 0, to problemu szukaj w napisanym skrypcie, poobserwuj go lub włącz logowanie błędów przy użyciu

Kod: Zaznacz cały

php skrypt.php &> /home/user/php.log
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Podejrzewam, że masz jednak max_execution_time ustawione i php ubija skrypt po tym czasie. Wyłączenie tej opcji jest dość niebezpieczne, szczególnie jeżeli hostujesz www. Może łatwiej będzie przepisać skrypt z wykorzystaniem funkcji daemon()? Uruchomiony wówczas kod jest procesem w pamięci.
ODPOWIEDZ