2016-09-15 14 views
0

私はPHP/IISベースのアプリケーションを持っています。 Crystal ReportsからPDFを生成し、それをプリンタに送信するバックエンドプロセス(powershell)を実行する必要があります。 バックエンドが実行されている間にブラウザの画面がハングアップし、実際にはプロセスを完了させることはめったにないので、PHPプログラムからPowerShellを直接呼び出す必要はありません。PHPからのバックエンド印刷のトリガー

私のデータベースプラットフォームとしてIIS/Server2008R2MSSQL2008R2でPHPを実行しています。

私はこの質問を投稿しており、何時間もの研究と試行の後にこれを達成する方法を考え出したので、自分自身で答えるつもりです。研究や不満の多くの時間後

答えて

0

、私は働き、次の解決策を考え出した:私は、私はそれがクリスタルランタイムライブラリへの呼び出しは、PDFファイルを生成することができる構築されたPowerShellスクリプトを持って

  1. とそれをフォルダに保管してください。
  2. 私はfoxitリーダーfreader.exe /t filename PRINTERNAMEを使用してプリンタに送信します。
  3. 私はcmdをセットアップして、powershellスクリプトを呼び出し、クリーンアップを行いました。 "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -file c:\pdf.ps\ProcessQueue.ps1
  4. 私のコマンドファイルを呼び出すイベントID 17061、ソースMSSQLSERVERによってトリガされたタスクスケジューラエントリをセットアップしました。
  5. 私のPHPのフロントエンドから、私は、SQLクエリを発行:xp_logevent 55555,'Print Job Requested',Informational

SQL Serverは、バックエンドでの私のスクリプトを実行するスケジュールされたタスクを、トリガイベントログのエントリを、発生させます。スクリプトは、データベース内のprintQueueテーブルをチェックし、pdfを構築して印刷します。

権限の問題のため、PHPでEventLOGに直接ログオンすることはできません。

このサイトの多くのおかげで、すべての素晴らしい情報があります。うまくいけば、これはこの問題に苦労している他の誰かを助けるでしょう。