PHPサンプル
php_queueの例は、Apache phpX.X(Xは数値)モジュールによってホストされるPHP言語に基づいたCloudPRNTサーバーの例です。 このデモンストレーションでは、非常にシンプルなキュー管理システムを実装します。顧客はボタン(例えばAndroidまたはiOSタブレットなどのWebブラウザーで表示)を押して、キュー番号とテキストおよび画像データを含むチケットを印刷できます。このデモンストレーションは意図的に基本的なものであり、セキュリティ、顧客への通知、および実際の展開に必要なその他の考慮事項は考慮されていません。
印刷では、すべての印刷ジョブはStarドキュメントマークアップランゲージを使用して作成され、cputilユーティリティを使用してプリンターでサポートされている適切な形式に変換されます。これにより、各々のCloudPRNT互換プリンターに対応するコマンドエミュレーションまたは印刷幅をサポートできます。
サーバー側では、接続されたプリンターとキューのテーブルを維持するために、単純なsqliteデータベースが使用されます。
この例は、phpモジュールを使用してApache Webサーバーを中心に構築されています。初期の開発とテストは、Apache HTTP Serverバージョン2.4.18で、Ubuntu 16.04 LTS x64ベースのサーバーで実行されています。また、Apache 2.4.29を使用してUbuntu 18.04.2 LTS x64でもテストされています。 PHP言語環境に基づいていますがCloudPRNT固有のコードについては汎用的であり、PHP以外のサーバーサイドスクリプトのソリューションの参考にもしていただけます。
インストレーション
インストールには、Apache 2 PHPモジュールをインストールして有効にする必要があります。これを行う正しい方法は、オペレーティングシステム/ディストリビューションによって異なり、Apacheがローカルでどのように構成されているかによって異なります。 また、本デモサンプルの動作確認時はローカルネットワークで構築されているため、プリンターからのアクセスが拒否される場合があり、PC環境によって事前にファイアーウォールの設定を無効(またはプリンターからのアクセス許可)の設定を行っております。
Windows 10(x64)の場合
Windowsサーバーシステムでは、例えばサンプルサーバーを次のように設定できます:
最初にcputilをダウンロードして、cputilを任意のユーザーが直接起動できるようにします。 これを実行する簡易的な方法は、cputilを任意の場所に展開しグローバルに実行できるよう登録するか、Webサービスと同フォルダー等に配置することです。
本説明では、サーバーサンプルの配置場所C:\Apache\Apache24\htdocs\php_queue
の直下にC:\Apache\Apache24\htdocs\php_queue\cputil
フォルダーを作成し、cputil-win-x64の中身をコピーしております。Apache HTTPサーバーをインストールします。
Apacheよりダウンロードしてください。
本説明では、httpd-2.4.46-win64-VS64.zipをダウンロードしております。 同ダウンロードページにて、vc_redist_x64
をダウンロードおよびインストール(VC_redist.x64.exeをダブルクリック)してください。ダウンロードしたビルド済みパッケージを任意の場所に展開します。
本説明では、C:\Apache
にApache24
以下のフォルダーを配置します。環境変数の変数名(PATH)にApache24\binのパス(
C:\Apache\Apache24\bin
)を登録します。コマンドプロンプトを起動し、httpd -vコマンドを実行します(バージョンが表示されれば成功です)。
C:\Apache\Apache24\conf\httpd.conf
をテキストエディタで開きます。Define SRVROOT "c:/Apache24"
を自環境にあわせて変更します。#ServerName www.example.com:80
をServerName localhost:80
に変更して保存します。 保存がうまくできない場合は、デスクトップにhttpd.conf
をコピーし上記の修正および保存をして、C:\Apache\Apache24\conf\httpd.conf
へ上書き保存してください。 参考:httpd.confコマンドプロンプトを管理者権限で起動し、
httpd -k install
コマンドを実行します。WebブラウザーのURL欄でlocalhostと入力して、It worksが表示されたら設定成功です。 うまく表示されない場合、コマンドプロンプトを管理者権限で起動し
httpd -k restart
コマンドを実行してください。PHPのWindows Downloadsから、Windows用Thread Safe版のZipをダウンロードします。 本説明では、PHP8.0.0 VS16 x64 Thread Safe (2020-Nov-24 22:49:03)版のZip (sha256: 712d36f5f40f128e0d5fc7dca03f2386c9f39cd250ecd1a25fb574d3d28ffa49)をダウンロードしました。
Zipを解凍し、phpにリネームし
C:\
フォルダーの直下にコピーします。C:\Apache\Apache24\conf\httpd.conf
をテキストエディタで開き、末尾に下記を追加して保存します。 参考:httpd.conf
# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
LoadFile "C:/php/php8ts.dll"
LoadFile "C:/php/libsqlite3.dll"
LoadModule php_module "C:/php/php8apache2_4.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
- php.iniを編集します。下記オプションのコメントアウト
;
を外します。 また、extension_dir
を検索して、コメントアウト;
を外し下記パスを記載してください。 (動作確認時、php.ini-developmentからphp.iniにコピーしております。) 参考:php.ini
extension_dir = "c:\php\ext"
extension=pdo_sqlite
extension=sqlite3
- PHPサンプルサーバーphp_queue.tar.gzを解凍し、php_queueフォルダーを
C:\Apache\Apache24\htdocs\
にコピーします。 また、コマンドプロンプトを管理者権限で起動しhttpd -k restart
コマンドを実行してください。
Webブラウザーを使用してhttp://<serverIP>/php_queue/management.html
を開くことによりインストールができているかテストします
備考:ソースコードを簡略化にするために、一部のパスはハードコーディングされていることに注意してください。たとえば、データベースが<document_root>\php_queue\simplequeue.sqliteにない場合、cloudprnt.php、devices.php、print.php、queues.phpの$dbnameのファイルパスを変更してください。
問題が発生した場合は、error.logを確認してください(Apacheの構成オプションによって異なる場合があります)。
使用方法
このデモを使用するには、まず管理ページ(http://<serverIP>/php_queue/management.html
)にログインしてください。このサーバーは、Sqlite3データベース内の顧客キューのリストを管理します。いくつかのキューの例は、デフォルトデータベースで定義されています。
登録されたプリンターのリストもデータベースに保存され、各プリンターは特定のキューに割り当てます。登録されていないCloudPRNTプリンターは、サーバーに接続しようとしてもサーバーによって無視されます。
プリンターを登録する
management.htmlページの下部には、新しいプリンターを登録するために必要な情報があります。最も重要なのはこのサーバーのCloudPRNTサービスを実装するURLです(URLは、サーバーのセットアップ方法によって異なる場合があります)。
- まずCloudPRNTクライアントを構成して、CloudPRNTが有効になっており正しいサーバーURLと通信していることを確認します。この手順はデバイスによって異なりますが、通常はWebベースのユーザーインターフェイスにログインする必要があります。キューチケットの印刷などのユーザー向けソリューションはレスポンスする必要があるため、ポーリング間隔を1秒に設定することをお勧めします。
デバイス:- Star mC-Print2
- Star mC-Print3
- Star TSP100IV
- Star TSP100IV SK
- Star mC-Label3
- management.htmlページで[Register A New Device]リンクをクリックし、ダイアログが表示されたら、登録するデバイスのMACアドレスを小文字で入力します。プリンターのMACアドレスは自己印字のNetwork Configuration欄もしくはWebベースのユーザーインターフェイス上で確認できます。
- 次に、新しいプリンターにリンクするキューのID(1, 2, 3...等の数字)を入力するように求められます。複数のプリンターを単一のキューにリンクしてもよいです。
これにてプリンターが登録され、最初にサーバーがデバイスの種類や印刷/用紙の寸法などの詳細をプリンターから取得します。
エンドユーザーのユーザーインターフェイスを表示する
新しく登録したプリンターは、management.htmlページのプリンターリストの新しい行に表示されます。右端の列には、オプション"Show"と"Delete"があります。 "Show"をクリックして、このプリンターのユーザーページを表示します。これは、エンドカスタマーがチケットを印刷できるようにタブレットに表示されることを想定したページです。大きな"Print"ボタンをクリックして、新しいキューチケットを印刷します。
プリンターを削除する
management.htmlページの"Registered CloudPRNT Devices"テーブルの右端の列にある"Delete"ボタンをクリックして、プリンターを削除します。
これはデモサーバーのサンプルであるため、プリンターに関連付けられているキューIDを変更する方法は削除してから再登録する(または直接sqliteデータベースを変更する)ことです。
キューを追加する
新しいキューを追加するにはmanagement.htmlページにアクセスし、"Add A New Queue"リンクをクリックします。キューの新しい名前を入力するように求められます。
キューを削除する
キューは関連する"Delete"リンクをクリックして、management.htmlページで削除できます。
キューを設定する
management.htmlページで、キューは関連付けられた"Reset"リンクをクリックすることにより、番号を"1"にリセットできます。
なお本サンプルでの、上下のロゴ画像の変更やチケットの生成に使用されるStarドキュメントマークアップの定義など各キューの追加構成が可能です。サンプルに複雑さを追加しないように、これはsqliteデータベースを直接変更することによってのみ可能です。