PHPでバッチファイルを作る方法|Windows・Linux対応の作り方と実務で役立つサンプルコード

PHPでバッチファイルを作る方法|Windows・Linux対応の作り方と実務で役立つサンプルコード

※ この記事にはアフィリエイトリンクが含まれます

PHPはWebアプリケーション開発で広く使われていますが、実はCLI(コマンドライン)から実行することで、バッチ処理にも活用できることをご存知でしょうか。

普段書いているPHPコードを少し工夫するだけで、自動化や定期処理を実現できるのです。

本記事では、

  • PHPでバッチファイルを作成する方法
  • 実際のサンプルコード
  • WindowsやLinuxでの定期実行の設定方法

をわかりやすく解説していきます。

記事の後半では「バッチ処理スキルが実務や転職でどのように評価されるのか」についても触れています。エンジニアとしてキャリアを磨きたい方にも役立つ内容となっていますので、ぜひ最後までご覧ください。

PHPの学習をしていく上で、役に立った書籍を紹介します。

PHPの基礎から、応用的なところまで実務レベルで学ぶことができます。

目次

PHPでバッチ処理を作る基本手順

PHPでバッチ処理を行う場合、通常のWebアプリケーションとは異なり、CLI(コマンドライン)からスクリプトを実行します。これによりブラウザを介さずに直接PHPを動かすことができます。

PHPファイルの作成

まずは通常のPHPファイルを作成します。ここでは、例としてbatch.php という名前で作成します。

<?php
// バッチ処理のサンプル
echo "バッチ処理を開始します...\n";

// ここに処理内容を書く
for ($i = 1; $i <= 5; $i++) {
    echo $i . " 回目の処理を実行中...\n";
    sleep(1); // 1秒待機
}

echo "バッチ処理が完了しました。\n";

コマンドラインから実行

作成したバッチ処理を実行してみましょう。ターミナルやコマンドプロンプトで、以下のように入力します。

php batch.php

実行すると、先ほどのスクリプトが順番に処理されていきます。

Windowsでの実行(.batファイルを作成)

Windowsでは、バッチファイル(.bat)を作成しておくと、ファイルをダブルクリックでPHPを実行できます。

run_batch.bat というようなバッチファイルを作成し、以下のように記述すると、run_batch.bat をダブルクリックすることでPHPを実行できます。

@echo off
php C:\xampp\htdocs\batch.php
pause

Linuxでの実行(cronを使用)

Linuxではcron に登録することで、定期的にPHPを実行できます。

例:毎日0時にbatch.php を実行する設定

0 0 * * * /usr/bin/php /var/www/html/batch.php

実際にPHPでバッチ処理を作ってみよう

ここからは、PHPで実際にバッチ処理を作成する例を紹介します。

例1:データベースの更新バッチ

「毎晩0時にユーザーのステータスを更新する」処理です。

<?php
// DB接続(PDOを使用)
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$user = "root";
$password = "";

try {
    $pdo = new PDO($dsn, $user, $password);
    echo "データベース接続成功\n";

    // 30日以上ログインしていないユーザーを「休眠」に更新
    $sql = "UPDATE users SET status = 'inactive' WHERE last_login < NOW() - INTERVAL 30 DAY";
    $count = $pdo->exec($sql);

    echo "更新件数: {$count} 件\n";
    echo "処理完了\n";

} catch (PDOException $e) {
    echo "エラー: " . $e->getMessage() . "\n";
}

ポイント

  • PDO を使って安全に接続
  • 更新件数をログに出力しておくとトラブル時に調査しやすい

例2:ログを保存するバッチ

毎日アクセスログをファイルに保存する簡単な例です。

<?php
$logDir = __DIR__ . "/logs";

// ディレクトリがなければ作成
if (!file_exists($logDir)) {
    mkdir($logDir, 0777, true);
}

// 今日の日付のファイル名を作成
$filename = $logDir . "/access_" . date("Ymd") . ".log";

// ログ内容を書き込み
$log = "[" . date("Y-m-d H:i:s") . "] アクセスログを記録しました\n";
file_put_contents($filename, $log, FILE_APPEND);

echo "ログファイルに出力しました: {$filename}\n";

ポイント

  • 日付ごとにファイルを分けると管理が楽
  • file_put_contentsFILE_APPEND を指定して追記モードにする

バッチ処理を実務で使う際に、やっておくべきポイント

  • エラー処理:例外をキャッチしてログに残すと調査に役立ちます。
  • ログ出力:標準出力だけでなくファイルにも保存すると管理しやすいです。
  • 環境変数の利用:DB接続情報やパスワードはコードに直書きせず .env に分離

まとめ

本記事では、PHPでのバッチファイル作成方法について解説しました。

  • バッチ処理とは? → 定期的なデータ更新やログ集計などを自動で行う仕組み
  • PHPでの実装手順 → CLI実行、Windowsの .bat、Linuxの cron によるスケジューリング
  • 実例コード → データベース更新やログ保存のバッチ処理
  • 安定運用のコツ → エラー処理、ログ出力、環境変数の活用

PHPはWeb開発だけでなく、バッチ処理でも活用できる柔軟な言語です。こうしたスキルは 実務で評価されやすく、転職活動においても「即戦力」として大きなアピールポイント になります。

もしあなたが「もっとバッチ処理やシステム運用に携われる環境で働きたい」「今の職場よりもキャリアアップしたい」と考えているなら、エンジニア向けの転職サイトを活用するのも一つの方法です。

おすすめの転職サイトをまとめた記事を作ってみましたので、こちらもぜひ参考にしていただけたらと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

沖縄出身のエンジニアです。IT業界で5年以上の経験があり、主にC#やPHPを使って開発を行ってきました。新しい技術にも興味があり、日々学びながらスキルアップを目指しています。

コメント

コメントする

CAPTCHA


目次