ローカルマシン上で動かしているpythonのコードを、サーバー上に移行することを検討中です。 現在、Jupyter Notebook(iPython Notebook)を使っていて、この環境向けに書いたコードを定期的に起動して、データ収集と解析を行っています。現状は、実行するときは手動でJupyterを起動して、操作しています。 この手間を何とかしたいわけです。
まず、pythonコードをPHPから呼び出す方法を確認。 いくつかのサイトに記載があり、つぎの2つの動作確認はすぐにできました。
「phpからpythonを呼び出し、実行結果を取得、表示」
「サーバー側でPythonスクリプトを動かし、結果をクライアント側に表示する」
ただ、numpyをインポートする単純なコードだと、phpではpythonの出力文字列を拾えない状態になった。上の2つ目のコードに順に追加していくと問題なく動作し、前の問題を再現できていない。
1つめのコードに1行ずつ追加して問題発生有無をチェックしていくと、2バイト文字を含む行を追加した時点で問題が発生することが判明した。 そして、2つ目のpythonコードと比べて、
2つ目のpythonコード の1行目「#-*– coding: utf-8 -*-」が効いていた。 これを1つめのコードに反映して問題が解決した。 この行の記述のとおり2バイト文字はここで指定した文字コードで保存しないと文字化けする。
↑そもそもPHPでエラー出力を拾えるように細工しておけば、原因はすぐに分かったはずだが、 久しぶりに触ると.やはりだいぶ忘れてます。
つぎはJupyter Notebookのコードを移植していきます。