Show / Hide Table of Contents

PHPサンプル

php_queue.tar.gz

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
  • Ubuntu Linux

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コマンドを実行します(バージョンが表示されれば成功です)。 Windows PHP1

  • C:\Apache\Apache24\conf\httpd.confをテキストエディタで開きます。

  • Define SRVROOT "c:/Apache24"を自環境にあわせて変更します。 Windows PHP2

  • #ServerName www.example.com:80をServerName localhost:80に変更して保存します。 保存がうまくできない場合は、デスクトップにhttpd.confをコピーし上記の修正および保存をして、 C:\Apache\Apache24\conf\httpd.confへ上書き保存してください。 参考:httpd.conf Windows PHP3

  • コマンドプロンプトを管理者権限で起動し、httpd -k installコマンドを実行します。 Windows PHP4

  • 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:\フォルダーの直下にコピーします。 Windows PHP5

  • 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

Windows PHP5

  • 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の構成オプションによって異なる場合があります)。

Ubuntu Linuxの場合

Ubuntu 18.04サーバーシステムでは、サンプルサーバーを次のように設定できます:

  • 最初にcputilをダウンロードして、cputilを任意のユーザーが直接起動できるようにします。
    これを実行する簡易的な方法は、cputilをグローバルな場所("/opt/starmicronics/cputil"など)に展開し、/opt/starmicronics/cputil/を指すシンボリックリンク/usr/local/bin/cputilを作成することです。
    mkdir -p /opt/starmicronics/cputil
    tar -zxvf ~/Downloads/cputil-linux-x64_v112.tar.gz -C /opt/starmicronics/cputil/
    sudo chmod 755 /opt/starmicronics/cputil/cputil-linux-x64/cputil
    ln -s /opt/starmicronics/cputil/cputil-linux-x64/cputil /usr/local/bin/cputil
    
  • cputilのインストール後、Apache HTTPサーバーをインストールします。
    sudo apt-get install apache2
    
  • PHPモジュールをインストールします。
    sudo apt-get install php
    
  • PHP-SQLiteモジュールをインストールします。
    sudo apt-get install php-sqlite3
    
  • Apache内のPHP利用を有効にします(例はPHPバージョン7.2.19です。)
    sudo a2enmod php7.2
    
  • Webサーバーを再起動します。
    sudo systemctl restart apache2
    
  • PHPサンプルサーバーphp_queue.tar.gzを*/var/www/html*へ展開します。
    sudo tar -xvf php_queue_v110.tar.gz -C /var/www/html/
    
  • PHPサンプルの新規ファイルの所有者がwww-dataユーザーであることを確認してください。これはwww-dataユーザーがデータベースに書き込み、データベース更新用のphp_queueフォルダーにロックファイルを作成する権限を持っている必要があるためです。
    sudo chown -R www-data:www-data /var/www/html/php_queue
    

Webブラウザーを使用してhttp://<serverIP>/php_queue/management.htmlを開くことによりインストールができているかテストします

備考:ソースコードを簡略化にするために、一部のパスはハードコーディングされていることに注意してください。たとえば、データベースが<document_root>/php_queue/simplequeue.sqliteにない場合、cloudprnt.php、devices.php、print.php、queues.phpの$dbnameのファイルパスを変更してください。

問題が発生した場合は、/var/log/apache2/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データベースを直接変更することによってのみ可能です。

In This Article
Back to top