【PHP】cronでWEBアクセスと全く同じ動作を行いたい

ブラウザで動作するWEBシステムで、
使用しているプログラムをcronから呼んだらうまくいかない、
WEBアクセスしたときと結果が違う、
ということはないでしょうか。

cronからPHPをコマンドで実行した場合、
環境変数などの実行環境がWEBとは異なるため
全く同じ動作を行う保証がなく、予測しにくい不具合を生みます。

そこで私は、バッチ処理などでcronからphpを呼ぶ場合は
wgetを使っています。

こんな感じでwgetを呼ぶシェルをcronにセットするだけです。

batch.sh

これでWEBアクセスと同じ動作を行わせることができます。

重複実行防止処理はphp側で行っています。
もし時間のかかる処理ならwgetのオプションにタイムアウトの指定をします。

【PHP】配列を任意の項目でソートする

連想配列を1データとする配列を任意の項目でソートしたい場合

データの例

年齢で昇順でソート

名前+性別の降順でソート

【Linux】PDFから文字を抽出する pdftotext

PDFから文字を抽出というと、OCRという技術が必要なイメージですが、
紙をスキャンしたPDFや、画像から生成したPDFなどではなく
文字を抽出できるタイプのPDFの場合、もっと簡単な方法があります。

pdftotextというコマンドを使用します。

たとえばAcrobatやWord、Excelなどから作成したPDFなら
これだけでテキストが抽出できます。