PHPでバッチを書いてシェルで制御する

投稿日: 2017/01/31

このバッチがきちんと終わったら、あのバッチを動かしたい。なんて事はよくあると思います。今までそのへんの事はcronで制御していたのですが、バッチがクソ増えてきてスケジューリングがつらたん。。という状態になり、こうなったら一連の処理を行うバッチはシェルで制御した方が楽だよね、そうだよね、じゃあ調べてね、ってなった時のことを書きます。
※ ジョブ管理ツールとかは無しで
※ 制御するとかありますが、そんな難しいことではないです
※ ちょっと回りくどい感じで書いていますので出来れば最後まで読んでみてください

やりたいこと

バッチA (hoge.php) 実行

エラー無し → (No) → バッチ終了
↓ (Yes)
バッチB (piyo.php) 実行

やりたいことはこんな感じです。

最初に書いたシェル

#!/bin/bash

PHP_PATH=`which php`
BATCH_DIR="/your/batch/dir"

${PHP_PATH} ${BATCH_DIR}/hoge.php \
&& ${PHP_PATH} ${BATCH_DIR}/piyo.php

>/dev/null 2>&1 これ書く書かない問題は別とします

普通にシェルで制御するって言われるとこんな感じで、&&でつなげて実行する方法を思いつくのではないでしょうか。
でもね、これですんなりいけるバッチは、エラーがあった場合にきちんと異常終了(終了コード 0 以外を返却)するように作られているバッチだけなんですよね。
続きを読んでみようかな…

ベンチマークの結果をd3.jsで可視化してみた

投稿日: 2016/12/29

もういくつ寝るとお正月。今年もあっという間に年末になりました。
年末になると今年も色々あったなぁなんて思い出にふけるわけですが、色々という言葉にほとんどの出来事は濃縮されてしまって、過ぎたことは本当にどうでもよくなりますね。
こうして人は年をとっていくんだなと思います。

というわけで、以前書いた

を使ってベンチマークの結果をd3.jsで可視化してみました。
サンプルは こちら です。

仕組みとしては、

  • shimabox/SMBBenchmark でベンチマークの結果を配列で出力
  • shimabox/SMBArrayto で受け取った配列を json※ で出力
  • d3.jsで受け取った json※ をつかってグラフを描画

※ csvでもtsvでもよいです

という流れになります。

ソース

続きを読んでみようかな…

【PHP】配列を渡したらcsv,tsv,ltsv,xml,jsonに変換するライブラリ書いた

投稿日: 2016/12/22

というわけで書きました。

これは何か

配列を渡すと、csv, tsv, ltsv, xml, json いずれかの形式に変換して、

  • ダウンロード機能
  • 出力機能(echo)
  • 保存機能

を提供します。

何で作ったか

csvとかtsvとかを作成する機会ってそんなに無いけど、たまに出くわすといつもググっているので書きました。
最初は保存機能だけを書いていたんだけど、ついでに出力機能(echoするやつ)とダウンロード機能もつけました。
あと併せて、ltsvとかxmlとかjsonも対応しました。

使い方

Google翻訳に100%頼って書いた

を日本語訳します。
続きを読んでみようかな…

PHPUnitでheader関数を使うメソッドのテスト

投稿日: 2016/12/13

まだ冬は本気をだしていないぞ〜。

以前こんな PHPUnitでajaxから呼ばれるモジュール(jsonをecho)のテストをする自分の解 | Shimabox Blogのを書きました。
その時はよく分からずmockを使えばうんたらかんたらみたいなことを書いちゃったのですが、最近同じようなケースがありまして、えぇ、調べ直したら実に簡単な方法があったのでメモっておきます。

ちなみに、PHPUnitのバージョンは4.8.31です。
続きを読んでみようかな…

スポンサーリンク