= !CronRunner - wywoływanie zaplanowanych zadań = === Automatyczna synchronizacja przy wykorzystaniu zaplanowanych zadań === #crontab 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 }}} UWAGA. Wcześniej należy utworzyć plik /var/log/cronrunner.log z uprawnieniami na www-data !!! 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 }}} [[Image(rys_001.png)]][[BR]]''Rys. 1.''[[BR]] Jeżeli uruchomi się powłoka sh należy wykonać polecenie: {{{ bash }}} [[Image(rys_002.png)]][[BR]]''Rys. 2.''[[BR]] 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'' [[Image(rys_003.png)]][[BR]]''Rys. 3.''[[BR]] 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 }}} [[Image(rys_004.png)]][[BR]]''Rys. 4.''[[BR]] Testując powinniśmy uzyskać następujący efekt: [[Image(dodatkowe_005.png)]][[BR]]''Rys. 5.''[[BR]] 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: [[Image(rys_006.png)]][[BR]]''Rys. 6.''[[BR]] 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 }}} [[Image(rys_007.png)]][[BR]]''Rys. 7.''[[BR]] Wynikiem tej operacji powinien być log, w którym nie pojawił się żadeń nowy wpis z błędem. [[Image(rys_008.png)]][[BR]]''Rys. 8.''[[BR]]