Cистема управления сайтом

Отложенная публикация в DJEM

Часто возникает вопрос как опубликовать несколько тысяч документов сразу или при публикации документов нужно обновлять другие документы, допустим анонсы в других разделах сайта, а они публикуются очень долго. Для это в DJEM предусмотрена "отложенная публикация" или "очередь публикации".
Очередь позволяет производить публикацию большего количества документов со сложной структурой в фоновом режиме.

В операторе publish есть параметр mode, который в значении "queue" публикует документы не сразу, а отправляет их в очередь публикации. Очередь формируется в базе данных в таблице pq.

Например:
<publish id=14 mode=queue>

Если при попытке сохранить ДШ с этим кодом появляется ошибка

[unknown:-1] Unknown column 'pq_ppoints' in 'field list'

Необходимо добавить поле pq_ppoints в таблицу pq. Для этого нужно выполнить следующий SQL-запрос, например через phpmyadmin или из консоли.

alter table pq add pq_ppoints varchar(255) not null default '';

Если документы добавляются в очередь, теперь нужно настроить запуск "демона публикации"
Он находится в директории на сервере /cgi-bin/djem/daemons/publishdaemon

Для начала нужно проверить - в рабочем ли состоятнии publishdaemon - запустить его из консоли

./publishdaemon

Если смайлики рисует или запустился процесс публикации - значит все в порядке.

Что бы не плодить процессы, запуская его по крону, мы рекомендуем запускать файл, который проверяет, не запущен ли уже publishdaemon.

В папку /cgi-bin/djem/daemons нужно положить файл, например, publisher.sh примерно такого содержания, поправив серверные пути.

#!/bin/sh

pid=`/bin/ps auxwwwwwwwwwwww | /usr/bin/grep -v grep | /usr/bin/grep /home/правильный_путь/cgi-bin/djem/daemons/publishdaemon | /usr/bin/awk '{print $2}'`

if [ "x$pid" != "x" ]; then
    echo "Already running"
    exit
else
    echo "Starting publishdaemon"
    cd /home/правильный_путь/cgi-bin/djem/daemons
    export LD_LIBRARY_PATH="/home/правильный_путь/cgi-bin/djem/daemons"
    exec /home/правильный_путь/cgi-bin/djem/daemons/publishdaemon
fi

 

Теперь нужно прописать в крон запуск этого файла, допустим раз в 2-5 минут, в зависимости от того, сколько он будет выполняться перед тем как будет остановлен сервером.

Поиск по документации

О компании  |  Партнёрам

© 2005 — 2024 DJEM Solutions, все права защищены. | Дизайн — Студия Fractalla