PHP でブラウザから job を投入する。電子実験ノートを自作してみた!導入コストゼロ!(4/5)

前回に引き続き、電子実験ノートの自作の記事です。

今回は、電子実験ノートから計算機に job を投入し、同時にノートを作成する機能を実装していきます。

参考電子実験ノートを自作してみた!導入コストゼロ!(1/5)
参考リアルタイムで計算状況を表示するシステムの構築!【電子実験ノートを自作してみた!導入コストゼロ!】(2/5)
参考CRUD を実装!電子実験ノートを自作してみた!導入コストゼロ!(3/5)
参考ログイン機能を実装する。電子実験ノートを自作してみた!導入コストゼロ!(5/5)

構成

  1. html で入力フォームを作成する。POST メソッドと SESSION メソッドを組み合わせて変数を受け渡す。
  2. 計算機にリモートログインし、job を投入する。
  3. MySQL にデータを登録

今回の記事で必要なファイルは下リンクからダウンロードしてください。

入力フォームの作成

前回の記事と同様に <form> ファグで入力フォームを作成します。

若干手間ですが、アップロードするファイルの path を入力するようにしてあります。

input type=”file” で選択したファイルの path を取得しようとすると別名で一時保存されたファイルの path が取られてしまいます。また、このままアップロードすると、別名のファイルがアップロードされてしまうので、計算機での job 投入コマンドで困ってしまいます。そのため、local_path を入力してもらっています。

続いて、POST メソッドで得た値をチェックし、OK ならば $_SESSION[‘submit’] メソッドに入れ、submit_check.php に遷移するようにします。

リモートログイン

submit_check.php で job の投入を行います。

第二回目の記事でもお話ししたように計算機へのログインには、ssh2_connectssh2_exec を使います。

上でダウンロードしたファイルの中の admin/submit_check.php というファイルを参照してください。

リモートログインした際の注意ですが、各計算機で設定してある alias は基本的には使用不能です。.bashrc を読み込む必要があります。

ジョブ・スケジューラーを利用して job を投入するときには sh ファイルを作成し、それを qsub などのコマンドで投入する必要があります。

管理人は、script フォルダ内に、input ファイルの内容を読み取り sh ファイルを作成し jobsubmit までしてくれるという自作のプログラムを用意しています。さらに aliaskmkm と入力すれば呼び出せるように設定してありますが、php からのリモートログインではこのようなことはできません。

ssh2_exec でコマンドを実行する際には、alias を使わずにフルパスでスクリプトを呼び出す必要があります。例えば、”/script/kmkm input.com“のように。

また、ファイルのアップロードには、ssh2_scp_send という関数を使います。include/job_submit.php の中身を参照してください。

ノートを作成

前回の記事でも説明したように、INSERT コマンドを使って MySQL に登録します。

第4回のまとめ

今回の記事では、電子実験ノートから直接 job を投入し、同時にノートの作成も行う方法を解説しました。

一見難しそうに見えますが、全て PHP と MySQL を組み合わせれば簡単に実装できます。

次回は、ログインシステムについてお話しします。

コメントを残す(投稿者名のみ必須)