phpからpython起動

ローカルマシン上で動かしている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のコードを移植していきます。

あっという間にディスクフル

そんなに大きなファイルを保存したはずもないのにディスクフルになることはないですか?

上は空き確保の対処後の状態ですが、まだまだ改善の余地なりの状態です。 ポイントは、保存したファイルの総サイズが255GBなのに対して、ディスク上のサイズは595GBという点です。実利用率は42%ほどにとどまっています。つまり、60%もの領域が使えない状況なのです。 

 この事象を発見した当時は、” 保存したファイルの総サイズが5GB程度なのに、4TBのHDDを使い切っていました。ディスクの実利用率は0.1%とひどい状況でした。原因はHDDの1ブロックのサイズが128MBと大きいのに、細かいサイズのファイルを大量にxcopyでバックアップしていたからでした。昔は512Byteとか4kByteだったので、何の問題もなかったのだが…。

バックアップの仕方を、圧縮したファイルを転送するようにバッチを変更しました。 ただ、たまに古いバッチが動いているようだ……。探して処置しないと… 

 それから、Windowsのイメージバックアップが1つのファイルで、1.6TBもある、OSなどバックアップ対象にしたファイルサイズはこんなに大きいはずはないのに。 バックアップの範囲内に、外部へのシンボリックリンクがあるような気もする… これも再確認が必要だ.