2

PHP でクライアント用のプレッジ管理システムを書き直すのに忙しいです。基本的に、寄付者、資金調達者、文書、および誓約情報をデータベースに保存します。

各プレッジの送信時に、2 つの請求書と、ユーザーが選択できる必要なドキュメントを印刷する必要があります。

通常の状況では、PHP (ちなみに Windows のローカル サーバー上にあります) で Word を開き、ドキュメントを開き、変数を置き換え、保存して印刷します。しかし、PHP を使用しているときは、その手順がどこまで進んでいるのかわかりません。

そこで、Delphi XE でこれを処理し、自動化された印刷キューを使用して小さなポップアップで進行状況を表示するアプリを作成したいと思います。PHP アプリは、データをデータベースに正常に挿入すると、ドキュメントを印刷する Delphi アプリを実行する必要があります。PHP は、必要な情報を JSON または CSV 形式でアプリに送信するだけで済みます。

これが私にとって問題のある部分です。このデータを何らかのキューに入れるにはどうすればよいですか? Delphi アプリが常に開いていることを確認し、テキスト ファイルをキューとして使用することを検討しました (ジョブごとにライン フィードを使用)。ライブ キュー。たとえば、アプリが現在印刷中の場合、別のアイテムが同時にキューに追加されたことを確認するにはどうすればよいでしょうか?

あるいは、キュー管理を行うためのより良い方法があるでしょうか?

4

2 に答える 2

2

ActiveMQApolloHornetQRabbitMQなどのメッセージ キューの使用を検討してください。メッセージ キューを介してメッセージを交換できる Delphi 用の(オープン ソースおよび商用)ライブラリが利用可能です。

PHP アプリは、ドキュメント (テキストまたはバイナリ データ) をメッセージ キューに送信します/queue/new_pledge。メッセージは(ActiveMQ / HornetQ / RabbitMQ)メッセージ ブローカーに保存され、Delphi クライアントが接続するまでそこで待機します。Delphi アプリが接続すると、メール アプリケーションで新しい電子メールを読むのと同様に、保留中のすべてのメッセージを取得します。送信者とクライアントは同時に実行する必要はありません (非同期操作)。

このソリューションは、ロード バランシングもサポートします。単一の Delphi アプリケーションで処理できるよりも多くのドキュメントを受信した場合は、より多くのコンピュータで追加のインスタンスを開始するだけです。キュー内のメッセージは、すべての Delphi アプリ間で分散されます。

PHP 側には、これらのオープン ソース メッセージ ブローカーでサポートされている STOMP と呼ばれる単純なプロトコルを使用するメッセージ ブローカー クライアント ライブラリがあります。

(私は、5 つの異なるメッセージ ブローカーをサポートする、Delphi および Free Pascal 用のHabari Client STOMP ライブラリの作成者です)


ps また、オペレーティング システムには既にメッセージ キュー システムがあります: Microsoft Message Queuing (MSMQ)

于 2013-01-28T22:20:45.623 に答える
0

複雑にしないでおく

json_encode()Indy httpserver Indy 10 Http Server sampleを使用して PHP から情報を投稿する

HTTP プロトコルの利点を利用して、一からやり直す必要はありません。

この単一のユニットを使用して、Delphi http://sourceforge.net/projects/lkjson/で JSON を読み取ります

于 2013-01-28T22:35:13.717 に答える