Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z cronem
Forum PHP.pl > Forum > Serwery WWW
denis94
Witam.

Posiadam serwer wirtualny którym mogę zarządzać poprzez directadmin.
Posiadam plik o nazwie cron.php który chciałbym otwierać co 5 minut. W pliku tym znajduje się tylko połączenie z bazą oraz zapytanie dodające rekord do bazy. Po otwarciu tego pliku w przeglądarce wszystko otwiera się momentalnie i rekord dodaje się.

Do uruchamiania pliku php poprzez crona używam

/usr/bin/lynx -dump /home/user/domains/domena/public_html/cron.php (komenda zalecana przez adminów hostingu)

Problem tkwi w tym, że gdy cron uruchomi się kilka razy po pewnym czasie przestaje się uruchamiać ponieważ na serwerze wisi bardzo dużo procesów z cały czas trwającymi poprzednimi otwarciami tego pliku php.

Nie wiem w jaki sposób się z tym uporać. Użycie flock mija się z celem gdy chcę uruchomić skrypt co 5 minut a proces wisi na serwerze kilka godzin. Dlaczego plik php nie wykona się w kilka sekund tylko tak blokuje crona?

Proszę o pomoc, nie umiem sobie z tym poradzić.
Hekko
Źle. Jeśli tak Ci polecił admin to zmień lepiej serwer.

Prawidłowo:
/usr/bin/lynx -dump http://domena/cron.php
lub
php /home/user/domains/domena/public_html/cron.php
^ lub inna ścieżka do php.
thek
Admin jak widać miał zły dzień winksmiley.jpg

Lynx to konsolowa przeglądarka linuxowa i stąd najlepiej mu podać adres www jako parametr. Znacznie lepszym rozwiązaniem (o niebo bezpieczniejszym) jest wywołanie skryptu z poziomu interpretera php (to druga metoda podana przez Hekko), ponieważ skrypt możesz albo zabezpieczyć poprzez przesunięcie go poza katalog publiczny, albo zezwolić tylko na wywołania CLI. Niestety konieczna jest znajomość ścieżki do interpretera, przykładowo /usr/php5/bin/php oraz podanie ścieżki do pliku cron.php począwszy od katalogu root konta (nie domeny!). To co podał Ci admin to jakiś dziwny misz-masz obu tych metod. Chyba więc nie wytrzeźwiał jeszcze admin po sylwku winksmiley.jpg
denis94
Witam.

Wcześniej używałem /usr/local/bin/php /home/user/domains/domena.pl/cron3.php i wszytko było w porządku, gdy zaczęły się problemy admin polecił lynx. Timeout powinien zatłuc proces jeżeli skrypt nic nie robi prawda?
Hekko
To wszystko zależy od ustawień serwera. Ustaw limit samodzielnie ewentualnie.
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.