明らかな理由から、キオスクは単純化されたユーザーインターフェイスを開発する必要があり、それをWebアプリケーションとして実装することにしました。 PHPに自信のある経験豊富なWebプログラマーのスタッフがいるので、医療システムのデータベースとの接続を整理して、PHPの作成を(スピードのために)委託することにしました。 インタラクションの3つのオプションを検討しました。
- ODBC
- JDBC
- Webサービス。
ODBCドライバーをインストールする
これは、いくつかの方法、つまり次の方法で実行できます。
- ODBCクライアントをオプションとして選択することによるLinux用Cachéのカスタムインストール。
- クライアントインストール(cinstall_clientスクリプト、配布パッケージのDVDバージョンで利用可能);
- ODBCクライアントのスタンドアロンインストール。
UNIX用のCachéディストリビューションでDVDをマウントし、ODBCディストリビューションのあるディレクトリに移動します。
sudo mount /dev/dvd /media
ディストリビューションがDVDではなく、.tar.gzファイル(cache-2009.1.2.602-lnxrhx64.tar.gzなど)の形式である場合は、どこかで解凍します。 さらに、配布バリアントに依存しません。 ドライバーをインストールするためのフォルダーを作成します(快適な場所)。 $フォルダーで表します。
mkdir $folder
配布キットでプラットフォームのドライバーを見つけます。
cd /media/dist/ODBC
x86_x64がある場合は、ODBC-lnxrhx64.tar.gzを選択し、x86_x32の場合はODBC-lnxrhx86.tar.gzを選択します。 アーカイブを選択した$フォルダーにコピーして解凍し、インストーラーを実行します。 インストールは同じフォルダで行われ、質問はありません。
cd $folder tar -xvf ODBC-lnxrhx86.tar.gz ./ODBCinstall
データソースの構成
次に、mgrに移動します
cd $folder/mgr
データソースの説明セクションでドライバー、ホスト、ポート(および場合によってはパスワード)の定義を変更して、cacheodbc.iniファイルを編集します。
[Samples] Driver = $folder/bin/libcacheodbc.so Description = Cache ODBC driver Host = IP- DNS- Caché Namespace = SAMPLES UID = _SYSTEM Password = SYS ( Caché , , ) Port = TCP- Caché ( 1972)
ドライバーとサンプルデータソースを確認するには、次を実行します。
cd $folder/dev/odbc/samples/select ./select.sh # select Samples.Person
ここで小さなコメントが適切です。 インストール後、CachéODBC for Linuxドライバーは、libcacheodbc.so(8ビット)とlibcacheodbciw.so(Unicode)の2つの形で表示されます。 条件では、データソース(Cachéインストール)とクライアント(phpアプリケーション)の両方が8ビット(CP1251エンコード)であったため、以下では8ビットバージョンのドライバーについてのみ説明します。
apache2 / php5からのCachéODBCデータソース(DSN)の操作
ローカライズCP1251の設定
ドライバーの8ビットバージョンを使用する場合、CachéODBCによって返される結果セットには、常にCP1251のコーディングがあります(Cachéインストールタイプに関係なく、8ビット(RUW8ローカリゼーション)またはUnicode(RUSW)です)。 アプリケーションデータに多言語が出現することは予想されていなかったため、これは非常に適していました。 Linuxに適切なローカライズをインストールすることだけが必要でした。 たとえば、Ubuntu 9.10では、これは次のように行われます。
sudo locale-gen ru_RU.CP1251 locale -a | grep 1251
ローカライズのリストに表示されます:
ru_RU.cp1251
RedHatのようなディストリビューション(Fedora Core 8、CentOS 5.xでテスト済み)では、ローカライズは次のように設定されます。
sudo localedef --no-archive -c -f CP1251 -i ru_RU ru_RU.CP1251
ru_RU.cp1251の確認も同様に行われます。
locale -a | grep 1251
さらに、PHPからDSNにアクセスできるように、ODBCマネージャーに登録する必要があります。 最もよく知られているのは、iodbcとunixodbcの2つです。 前者は、8ビットとUnicodeの両方のバージョンのCachéODBCドライバーを使用できるため、より汎用性があります。 2つ目はより広く、インストールが簡単ですが、(Cachéの場合)8ビットのみがサポートされています。 これは私たちにとって追加の制限ではなかったので、unixodbcが基礎として採用されました。 以下は、Ubuntu 9.10でのインストールの説明です。
ODBC Unixodbc Managerのインストール(Ubuntu 9.10上)
この手法はru.php.net/manual/en/function.odbc-connect.phpから借用しています 。 つまり、インストール:
sudo apt-get install <->
以下のパッケージ:
apache2 apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 odbcinst1debian1 php5 php5-cli php5-common php5-odbc unixodbc
次に、Apacheを再起動します。
sudo /etc/init.d/apache2 restart
unixodbcにドライバーとDSNCachéODBCを登録する
CachéODBCが$フォルダにインストールされたことを思い出して、以下を実行します。
cd $folder/dev/odbc/redist/unixodbc
odbcinst_template.iniをodbcinst.iniにコピーし、このファイルにドライバーパス($ folder / bin / libcacheodbc.so)を2回書き込みます。 odbc.iniのodbc_template.iniをコピーし、このファイルにデータソースに対応するIP、ポート、ネームスペース、UID、およびパスワードを書き込みます。 複数ある場合は、DSNごとに繰り返します。 テストでは、「データソースの構成」セクションと同じパラメーターを使用してサンプルソースを作成するのが理にかなっています(その調達はodbc_template.iniにあります)。 また、[samples]セクションをコピーしてodbc.iniに新しいセクションを追加することにより、アプリケーション領域(QMSと呼びます)をターゲットとするDSNを作成します。 リージョンが呼び出されたときにセクションに名前を付け、変更します-サンプルに関して-ただ1つのパラメーター:
[QMS] ... Namespace = QMS
すべてのDSNは、単一のodbc.iniファイルに記述できます。
Host、Namespace、Port、UID、およびPasswordの使用値は現実に対応している必要があります。つまり、これらの詳細からテーブルおよび/またはストアドプロシージャを含むCachéエリアにアクセスできる必要があります。 検証方法は、もちろん、保存されているデータの種類によって異なります。 %Service_Bindingsサービスが、Cachéで認証なしのログインを許可する場合、UIDおよびパスワードの詳細を空のままにすることができます(これらのフィールドは両方とも必須です)。 Cacheの一部のバージョンでは、odbc_template.iniの例でスーパーユーザー_systemに誤ったパスワード値を設定します。これは、Cachéで最低限のセキュリティを選択するときのデフォルト値とは異なります(ヒント:パスワードでは大文字と小文字が区別されます)。 さらに、Caché管理者はパスワードを変更できます。 最後に、DSNにユーザー名/パスワードを保存することは安全ではないため、テスト中にのみ保存することをお勧めします。 操作中は、ODBC経由で接続を確立するときに、それらをphpアプリケーションに「縫い付け」てサーバーに転送することをお勧めします。
次に、ドライバーと使用可能なすべてのDSNを登録します。
sudo odbcinst -i -d -f odbcinst.ini sudo odbcinst -i -s -l -f odbc.ini
登録後、対応するエントリが/etc/odbc.iniおよび/etc/odbcinst.iniファイルに表示されます。
PHPでのテスト
すべてを正しく行い、SAMPLESデータソースを記述した場合、CachéODBCドライバーと共にインストールされた$ folder / dev / odbc / samples / php / sample.phpの例は機能します。 ロシア語の何かを試したい(そして最終的に開発のテストを開始したい)場合は、現在のローカリゼーションCP1251をphpコードの先頭近くに挿入することを忘れないでください。
echo setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
おわりに
最後に、ソリューションの一般的なアーキテクチャに関するいくつかの言葉(キオスクのブラウザ-phpアプリケーション-Cachéデータベース)。 私たちの場合、Web開発者とCachéアプリケーションプログラマの間の作業分担を簡素化し、Web開発者にとって最も使いやすく快適な環境を維持しながら、Web開発者の作業を楽にしました。 同時に、もちろん、直接的な対話(クライアント上のブラウザ-Cachéのアプリケーションコード)は、パフォーマンスと構成の容易さの両方の面でより効果的であることを理解しました。 この理解は長年にわたって強化されただけであり、当社の医療システムで完全に機能するウェブインターフェースの作成に反映されました。
それでも、CachéへのODBCアクセスは、特定の「生態学的ニッチ」を依然として占有しています。
- 他の多くのアクセス方法(たとえば、SOAP)よりも高いパフォーマンスがあります。
- 中間ストアドプロシージャなしで、テーブルに直接アクセスできます。
- これは、特殊な外部インターフェイスの開発がサードパーティチームによって実行される場合に、「関係を正式化する」ための良い方法です。