Как узнать, что задания на печать CUPS завершены, а также получить информацию об этом задании?
Вопрос
Мне нужно знать каждый раз, когда задание печати Mac создается/завершается, а также некоторую информацию об этом задании (что было напечатано, страницы, копии и т. д.).
Лучший метод, который я придумал на данный момент, — это использовать kqueue() в /var/spool/cups/, а затем анализировать файлы c##### по мере их создания, но мне интересно, есть ли лучший способ способ.
Решение
Я бы подумал о создании фильтра, который вы можете поместить в конвейер CUPS, который собирает эту информацию и сохраняет ее для вас (скажем, в базе данных). Затем вы можете получить доступ к базе данных, чтобы получить информацию, используя любой стандартный механизм доступа к базе данных. По сути, фильтр - это просто программа командной строки, которая получает ряд параметров, переданных ему из CUPS, и должна прочитать входные данные в stdin и записать их в stdout. Вы можете найти дополнительную информацию на http://www.cups.org/documentation. PHP / апи-filter.html .
Другие советы
Вы когда-нибудь смотрели, что предоставляет вам файл page_log ? Там есть справочная страница с подробностями о ее формате. Последние версии CUPS позволят вам настроить объем информации, зарегистрированной в этом файле.
Вы заглянули в подписка на IPP схемы, поддерживаемые CUPS?
Это может вызвать почта: или rss: уведомление об определенных событиях в системе печати.Операции IPP, связанные с этой темой:
Create-Job-Subscriptions, Create-Printer-Subscriptions, Create-Resource-Subscriptions, Create-System-Subscriptions
Подробности об этой функции можно найти в Руководстве по программированию CUPS: