Strona 1 z 1

Uruchomienie skryptu z pomocą programu sreen

: 27 września 2011, 09:36
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

: 27 września 2011, 10:22
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

: 27 września 2011, 10:48
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.