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 

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 

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.: 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.