【SQL】1つのDELETE文で複数のテーブルのデータを削除する

複数のテーブルのデータを一気に削除する構文は

このような間違えると危険なDELETE文を実行するときは
面倒でもテーブルのバックアップを取ってから実行することをオススメします。
でないと一瞬で大惨事になります。(経験者談)

【SSL証明書】Apache再起動時のパスフレーズ入力を省略する

SSL証明書にはApache再起動時にパスフレーズの入力が必要なものもあります。
Apacheの再起動が手動のみなら毎回入力するのが最もセキュアですので、そのままで問題ありませんが
再起動を定期バッチなどで自動化したい場合は、パスフレーズの入力を省略する必要があります。

下記の方法で省略可能です。
毎回入力するよりもセキュリティ上のリスクはあるものの、
これでパスフレーズありの場合でも再起動を自動化できます。

まず、パスフレーズを出力するスクリプトを作成します。

例えば、パスフレーズが「AAAABBBB」だったとして
/etc/httpd/conf.d/passphrase.sh

スクリプトのパーミッションを変更しておきます。

次に、/etc/httpd/conf.d/ssl.confで

この行をコメントアウトして、下記を追加します。

これで、再起動した際にパスフレーズの入力を省略できます。

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

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

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

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

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

batch.sh

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

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