sql server — запускает внутреннюю печать из переполнения стека

У меня есть внутренний PHP/IIS на основе приложения.
Мне нужно запустить бэкэнд процесс (powershell) который генерирует PDF из Crystal Reports и затем отправляет его на принтер.
Я не хочу вызывать powershell напрямую из моей PHP-программы, потому что он зависает на экране браузера во время работы серверной части и редко выполняет его.

Я использую PHP на IIS/Server2008R2 с MSSQL2008R2 в качестве моей платформы базы данных.

Я задаю этот вопрос и собираюсь ответить на него сам, поскольку выяснил, как этого добиться после многих часов исследований и испытаний.

0

Решение

После многих часов исследований и разочарований я нашел следующее решение, которое работает:

  1. У меня есть сценарий powershell, который я создал и который вызывает библиотеку Crystal Runtime для создания PDF-файла и сохранения его в папке.
  2. Я использую Foxit Reader freader.exe /t filename PRINTERNAME отправить его на принтер.
  3. Я установил cmd для вызова сценария powershell и очистки. "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -file c:\pdf.ps\ProcessQueue.ps1
  4. Я установил запись в планировщике задач, вызванную идентификатором события 17061 Source MSSQLSERVER, который вызывает мой командный файл.
  5. Из моего PHP-интерфейса я отправляю SQL-запрос: xp_logevent 55555,'Print Job Requested',Informational

SQL Server вызывает запись в журнале событий, которая запускает запланированную задачу, которая запускает мой сценарий на сервере. Сценарий проверяет таблицу printQueue в базе данных, создает файл pdf и печатает его.

Из-за проблем с разрешениями вы не можете заставить PHP напрямую подключаться к EventLOG.

Спасибо многим другим на этом сайте за всю замечательную информацию. Надеюсь, это поможет кому-то еще, кто борется с этой проблемой.

0

Другие решения

Других решений пока нет …