Установленный дистрибутив Detrix под Windows или самостоятельно настроенная система под Linux (FreeBSD) не выполняет запуск фоновых сервисов. А эти сервисы обеспечивают выполнение таких функций, как прием-отправка почты на внешние почтовые ящики, реализацию контроля и напоминаний на документы, индексацию данных для работы полнотекстового поиска. Таким образом, если не выполнить действия, приведенные в настоящей статье, ничего из перечисленного работать не будет. Выполнять действия нужно над версией не ниже 1.0.2. Если у вас более старая версия, обновитесь. И установите в файле settings.php, который находится в корневом каталоге системы, соответствующие параметры доступа к базе данных:
$aSettings['db'] = array(
'host' => '127.0.0.1',
'port' => '5432', //для дистрибутива под Windows порт 6543
'database' => 'detrix',
'user' => 'detrix',
'password' => 'пароль',
'scheme' => 'manuscript'
);
Не помешает также установить параметр $aSettings['hostURL'] равным URL-адресу вашего сервера Detrix. Этот адрес система будет использовать при отправке почтовых сообщений от действий Контроль и Напоминатель.
Запуск фоновых служб в Detrix осуществляется при помощи стандартных планировщиков времени операционных систем. Начнем с мира Unix.
Запуск фоновых служб Detrix в Linux и FreeBSD
Прописываем в /etc/crontab для Linux
* * * * * www-data /usr/bin/php /var/www/detrix/cs.php > /dev/null
для FreeBSD
*/1 * * * * www /usr/local/bin/php /var/www/detrix/cs.php > /dev/null
Готово.
Запуск фоновых служб Detrix в Windows
Рассматриваем вариант настройки под Windows 7. В других системах корпорации Microsoft порядок настройки аналогичен с учетом поправки на окна версию Windows.
Отправляемся в Панель управления, Систему и безопасность, Администрирование, где находим Планировщик заданий. Справа находим действие Создать задачу. А дальше ориентируйтесь по нижеприведенным скриншотикам:
Вкладка Общие
Вкладка Триггеры
Вкладка Действия
Здесь можно внести некоторые усовершенствования. Без них раз в минуту будут появляться черные консольные окна. Пропадать они будут быстро, но, если вы планируете работать за этим компьютером, уже спустя час работы осадок гарантирован. А потом лучше воспользоваться какой-нибудь утилитой, которая подавляет вывод этих окон. Например, hidcon (на всякий случай внизу этой страницы приложена копия этой утилиты). И тогда нужно будет изменить вкладку Действия, указав в качестве программы пусть к hidcon.exe (например, C:\hidcon.exe), а в качестве аргументов Z:\usr\bin\php.exe -q z:\home\localhost\www\cs.php
Вкладка Условия
Вкладка Параметры
Готово.
Лог-файлы фоновых сервисов Detrix
Результаты запуска можно наблюдать в лог-файле /var/www/detrix/var/logs/cron-ГГГГММДД.log,
где ГГГГ — четыре цифры текущего года, ММ — две цифры текущего месяца, а ДД — двузначное число дня. В этом файле раз в минуту будут появляться записи, похожие на нижеприведенные:
[SERVER STARTED AT: 2011.12.25 13:28:01 ]
[S-601F id:286 type:control pid:24382 datetime:2011.12.25 13:29:01 status: 1/13]
[E-601F id:286 type:control pid:24382 datetime:2011.12.25 13:29:01 timeout: 60 status:1/13]
[S-5A89 id:285 type:importmail pid:24382 datetime:2011.12.25 13:29:01 status: 1/13]
[E-5A89 id:285 type:importmail pid:24382 datetime:2011.12.25 13:29:02 timeout: 90 status:1/13]
[S-323B id:287 type:index pid:24382 datetime:2011.12.25 13:29:02 status: 1/13]
[E-323B id:287 type:index pid:24382 datetime:2011.12.25 13:29:03 timeout: 90 status:1/13]
[S-36BC id:71 type:remind pid:24382 datetime:2011.12.25 13:29:03 status: 1/13]
[E-36BC id:71 type:remind pid:24382 datetime:2011.12.25 13:29:03 timeout: 60 status:1/13]
[S-AEBD id:290 type:sendmail pid:24382 datetime:2011.12.25 13:29:03 status: 1/13]
[E-AEBD id:290 type:sendmail pid:24382 datetime:2011.12.25 13:29:03 timeout: 90 status:1/13]
Сии иероглифы означают следующее:
- [SERVER STARTED AT: 2011.12.25 13:28:01 ] — дата запуска сервиса. Если вы не увлекаетесь перезагрузкой своего сервера, такую надпись в логах наблюдать будете очень нечасто.
- [S-601F id:286 type:control pid:24382 datetime:2011.12.25 13:29:01 status: 1/13] — сервис control (он относится к действию Контроль) c идентификатором 286 запущен (S — Start), системный PID процесса 24382.
- [E-601F id:286 type:control pid:24382 datetime:2011.12.25 13:29:01 timeout: 60 status:1/13] — этот же сервис завершил свою работу.
Linux , ошибка при работе:
PHP Fatal error: Class ‘MSF_String’ not found in /var/www/html/detrix/modules/workflow/actions/decision/variables/WFA_DecisionVar.php on line 214
Убедитесь в наличии файла /var/www/html/detrix/system/utils/MSF_String.php
Извините, не в той теме написал.
Эта ошибка происходит 1 раз в час при запуске cron’a.
Будем разбираться. Ошибка незначительная, на работоспособность системы не влияет. Теоретически, ее вообще быть не должно, т.к. данный код отвечает за переменную РЕШЕНИЕ, которая в фоновых службах не используется.
Мне под Ubuntu
echo «* * * * * nice -n 19 php5 /var/www/detrix/cs.php > /dev/null» > /var/spool/cron/crontabs/detrix
Не помогло.
Вбил вручную * * * * * nice -n 19 php5 /var/www/detrix/cs.php > /dev/null через
sudo crontab -e -u detrix
При попытке выполнить задание получается дичь
PHP Deprecated: Comments starting with ‘#’ are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Warning: include_once(../../system/utils/MSF_Logger.php): failed to open stream: No such file or directory in /var/www/detrix/cs/library/CronoSphere.php on line 4
PHP Warning: include_once(): Failed opening ‘../../system/utils/MSF_Logger.php’ for inclusion (include_path=’.:/usr/share/php:/usr/share/pear:/var/www/detrix’) in /var/www/detrix/cs/library/CronoSphere.php on line 4
PHP Warning: include_once(Archive/Tar.php): failed to open stream: No such file or directory in /var/www/detrix/cs/library/Updater.php on line 3
PHP Warning: include_once(): Failed opening ‘Archive/Tar.php’ for inclusion (include_path=’.:/usr/share/php:/usr/share/pear:/var/www/detrix’) in /var/www/detrix/cs/library/Updater.php on line 3
[SERVER RESTARTED AT: 2012.03.23 16:09:24 ]
PHP Fatal error: Uncaught exception ‘MSF_ThrowableException’ with message ‘fopen(/var/www/detrix/var/logs/cron-20120323.log): failed to open stream: Permission denied
Number: 2
Type: Warning
Line: 53
File: /var/www/detrix/system/utils/MSF_File.php
‘ in /var/www/detrix/system/msfErrorHandler.php:35
Stack trace:
#0 [internal function]: msfErrorHandler(2, ‘fopen(/var/www/…’, ‘/var/www/detrix…’, 53, Array)
#1 /var/www/detrix/system/utils/MSF_File.php(53): fopen(‘/var/www/detrix…’, ‘a+’)
#2 /var/www/detrix/system/utils/MSF_Logger.php(34): MSF_File::write(‘/var/www/detrix…’, ‘MSF_ThrowableEx…’, ‘a+’, 509)
#3 /var/www/detrix/system/utils/MSF_Logger.php(50): MSF_Logger::logMessage(‘MSF_ThrowableEx…’, ‘cron’)
#4 /var/www/detrix/cs.php(41): MSF_Logger::logTrace(Object(MSF_ThrowableException), ‘cron’)
#5 /var/www/detrix/cs.php(94): CSApplication::main()
#6 {main}
thrown in /var/www/detrix/system/msfErrorHandler.php on line 35
Понял в чём дело.
1) У Ubuntu немного другое дерево зависимостей и пакет php5-cli надо ставить явно. Сам он не подцепляется как надо. Если не ставить, то кое-что работать будет и без него, но фоновые службы в это «кое-что» не попадают. (И да, при установке пакет затрёт /etc/php5/cli/php.ini)
2) Файлик detrix в crontabs может не читаться cron-ом из-за дефектного символа закрытия файла. (Не весь, а только последняя запись, но поскольку у нас она одна, то именно её и не будет выполнять.) Я решил эту проблему добавив строчку с #
Два дня назад настроил запуск фоновых служб в Ubuntu. Все работало, но сегодня после включения сервера в логах вдруг появилось такое:
[SERVER STARTED]
MSF_ThrowableException: fopen(/home/serg/www/detrix/var/.lock): failed to open stream: Permission denied
Number: 2
Type: Warning
Line: 103
File: /home/serg/www/detrix/cs/library/CSLauncher.php
? ?
/home/serg/www/detrix/cs/library/CSLauncher.php 103
/home/serg/www/detrix/cs/library/CSLauncher.php 120
/home/serg/www/detrix/cs.php 35
/home/serg/www/detrix/cs.php 94
Ничего не изменял… Что могло случиться с доступом?
Пожалуйста, вывод
ls -l /home/serg/www/detrix/var
id detrix
Удалите файл /home/serg/www/detrix/var/.lock
Спасибо помогло. Но откуда и зачем этот файл взялся?
[SERVER RESTARTED]
MSF_ThrowableException: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: database "doc" does not exist
Number: 2
Type: Warning
Line: 40
File: Z:\home\localhost\www\system\utils\MSF_DB.php
? ?
Z:\home\localhost\www\system\utils\MSF_DB.php 40
Z:\home\localhost\www\cs\library\CSLauncher.php 41
Z:\home\localhost\www\cs\library\CSLauncher.php 48
Z:\home\localhost\www\cs.php 29
Z:\home\localhost\www\cs.php 97
Кусок файла cron*.log с ошибкой . Где надо поправить ?
Перенесите вопрос на форум, пожалуйста.