WikiPrint - from Polar Technologies

CronRunner - wywoływanie zaplanowanych zadań

Automatyczna synchronizacja przy wykorzystaniu zaplanowanych zadań

System eDokumenty pozwala uruchomić zadania synchronizacji automatycznie. Wykorzystuje do tego celu systemowy Harmongram Zadań (w linuksie cron). Mechanizm ten uruchamia skrypt CronRunner.php w trybie klienta. Skrypt ten odpowiedzialny jest za realizację zadań zapisanych w bazie danych systemu eDokumenty (konkretnie w tabeli crontab).

Konfiguracja środowiska

Zanim zostanie utworzone pierwsze zadanie - system trzeba przygotować do uruchamiania skryptu CronRunner.php. W tym celu w systemie linux należy dodać odpowiedni wpis do pliku /etc/crontab

 */1 * * * * www-data cd /home/edokumenty/public_html/apps/edokumenty && php -f CronRunner.php >> /var/log/cronrunner.log

Natomiast w systemie Windows można utworzyć zadanie w systemowym panelu Harmonogram Zadań lub też wykonać z lini poleceń (cmd) komendę:

 schtasks /create /sc co_minutę /mo 5 /tn "CronRunner" /tr "php -f C:\Program Files\BetaSoft\eDokumenty\CronRunner.php"

W tym momencie należy przetestować działanie skryptu. Na systemie Windows należy uruchomić zadanie i sprawdzić w historii pobierania, czy wykonała się synchronizacja. Tutaj oprzemy się o testowaniu na systemie Linux. W tym celu należy przejść na konto użytkownika www-data:

 su - www-data


Rys. 1.

Jeżeli uruchomi się powłoka sh należy wykonać polecenie:

 bash


Rys. 2.

Będąc w powłoce bash należy wykonać polecenie:

 cd /home/edokumenty/public_html/apps/edokumenty && php -f CronRunner.php >> /var/log/cronrunner.log

Po kliknięciu przycisku Enter w konsoli powinna się pojawić standardowa linia ze znakiem zachęty. Jeżeli pokaże sie jakikolwiek komunikat, to znaczy, że coś nie działa

Poniższe zrzuty ekranu pokazują typowe problemy napotkane przy uruchamianiu CronRunner-a.:

Brak uprawnień do pliku CronRunner.log
Rys. 3.

W celu rozwiązania tego problemu należy w odpowiedniej lokalizacji np. w katalogu /var/log/ z poziomu użytkownika root utworzyć plik (pusty) i nadać mu odpowiednie uprawnienia:

 cd /var/log
 vim CronRunner.log -> następnie w Vimie zapisać pusty plik poleceniem 
 :wq
 chmod 664 CronRunner.log
 chown www-data:edokumenty CronRunner.log


Rys. 4.

Testując powinniśmy uzyskać następujący efekt:

No image "dodatkowe_005.png" attached to DeployerGuide/Others/Cronrunner
Rys. 5.

Taki widok w konsoli oznacza, że skrypt wykonał się. Na wszelki wypadek nalezy spojrzeć do pliku log-a:

 tail /var/log/CronRunner.log

W przypadku wystąpienia następującego komunikatu:


Rys. 6.

Oznacza to, że w pliku /etc/php5/cli/php.ini jest zła konfiguracja. Sposób postępowania jest podobny także w przypadkach np. braków rozszerzeń do obsługi innych systemów. W celu naprawy sytuacji należy utworzyć link symboliczny do php.ini apache'a, który wiemy, ze jest prawidłowy.

 cd /etc/php5/cli/
 mv php.ini php.ini.bak
 ln -s /etc/php5/apache2/php.ini php.ini


Rys. 7.

Wynikiem tej operacji powinien być log, w którym nie pojawił się żadeń nowy wpis z błędem.
Rys. 8.