カテゴリ: PHP 更新日: 2025/12/27

PHPで定期実行処理を行う方法!cron・sleep・usleepをやさしく解説

PHP の定期実行処理(cron, sleep, usleep)
PHP の定期実行処理(cron, sleep, usleep)

先生と生徒の会話形式で理解しよう

生徒

「PHPで毎日決まった時間に処理を自動で実行することってできますか?」

先生

「できますよ!そのためにはcronという仕組みを使ったり、PHPのsleepやusleepという命令を使って処理の間隔を調整する方法があります。」

生徒

「cronとかsleepって、なんだか難しそうです…」

先生

「安心してください!初心者にもわかりやすく、PHPの定期実行処理をやさしく解説していきますね。」

-

1. PHPで定期的な処理をしたい場面とは?

1. PHPで定期的な処理をしたい場面とは?
1. PHPで定期的な処理をしたい場面とは?

PHPで定期的に処理を実行したい場面は意外とたくさんあります。たとえば、次のようなシチュエーションです:

  • 毎日決まった時間にメールを送信したい
  • 1時間ごとにデータベースをチェックしたい
  • 10秒ごとにAPIを叩いて最新情報を取得したい

こういった処理を自動で動かす方法としてよく使われるのが、「cron(クーロン)」「sleep(スリープ)」「usleep(ユー・スリープ)」です。

2. cron(クーロン)とは?PHPのスクリプトを自動実行する仕組み

2. cron(クーロン)とは?PHPのスクリプトを自動実行する仕組み
2. cron(クーロン)とは?PHPのスクリプトを自動実行する仕組み

cron(クーロン)とは、Linux(リナックス)というサーバーのシステムに標準で入っている機能で、決まった時間に自動でプログラムを実行する仕組みです。PHPファイルを指定すれば、毎日・毎時など好きなタイミングでPHPを動かせます。

たとえば、毎日朝6時にscript.phpを実行するには、次のような設定を使います。


0 6 * * * /usr/bin/php /var/www/html/script.php

この設定は、「0分6時毎日毎月毎週」という意味になります。これをcrontab(クーロンタブ)というファイルに登録することで、自動実行されます。

3. sleep関数で数秒待ってから次の処理へ

3. sleep関数で数秒待ってから次の処理へ
3. sleep関数で数秒待ってから次の処理へ

cronは「決まった時刻に実行」でしたが、sleep関数を使うと、プログラムの途中で一定時間止めることができます。単位は秒(びょう)です。


<?php
echo "処理1を開始します。\n";
sleep(5); // 5秒待つ
echo "5秒待った後に処理2を実行します。\n";
?>

このように、sleepを使えば「間をあけながら処理を実行する」ことが可能になります。たとえば、APIを呼び出すときに短時間で連続実行するとエラーになる場合などに使われます。

4. usleep関数でミリ秒・マイクロ秒単位の待ち時間

4. usleep関数でミリ秒・マイクロ秒単位の待ち時間
4. usleep関数でミリ秒・マイクロ秒単位の待ち時間

usleep(ユー・スリープ)関数は、より短い時間で待機したいときに使う関数です。sleepと違い、マイクロ秒(100万分の1秒)で指定します。

たとえば、0.5秒(500ミリ秒)待ちたいときは次のようにします。


<?php
echo "スタート\n";
usleep(500000); // 0.5秒待つ(500,000マイクロ秒)
echo "0.5秒経過\n";
?>

usleepは短い間隔で繰り返す処理に便利です。ただし、あまりにも短い時間でループし続けると、サーバーに負荷がかかるので注意しましょう。

-

5. PHPでループ+sleepを組み合わせて定期処理にする

5. PHPでループ+sleepを組み合わせて定期処理にする
5. PHPでループ+sleepを組み合わせて定期処理にする

PHPだけで「ずっと動かし続ける」処理を作りたいときは、ループ+sleepを使います。次のコードでは、10秒ごとに処理を繰り返しています。


<?php
while (true) {
    echo "現在時刻: " . date("Y-m-d H:i:s") . "\n";
    sleep(10); // 10秒ごとに繰り返す
}
?>

while(true)は無限ループといって、ずっと同じ処理を繰り返す仕組みです。タイマーのように定期的なチェック処理を行いたいときに便利です。

6. cronとsleep・usleepはどう使い分ける?

6. cronとsleep・usleepはどう使い分ける?
6. cronとsleep・usleepはどう使い分ける?

ここで、cronsleep/usleepの使い方の違いを整理してみましょう。

  • cron: 毎日・毎週など、決まった時刻に処理を自動で実行したいとき
  • sleep: 処理の間に「数秒」待ち時間を入れたいとき
  • usleep: より短い間隔(0.1秒や0.5秒など)で細かく制御したいとき

それぞれ特徴があるので、用途に合わせて使い分けましょう。

7. 定期実行処理の注意点と初心者向けアドバイス

7. 定期実行処理の注意点と初心者向けアドバイス
7. 定期実行処理の注意点と初心者向けアドバイス

定期的な処理はとても便利ですが、使い方を誤るとサーバーに負担をかけたり、無限ループで止まらなくなったりすることがあります。初心者が安全に使うためのポイントは以下の通りです。

  • sleepを長めに設定して、処理の間隔をあける
  • cronの設定ミスに注意(例:毎分動くように設定してしまう)
  • ログ出力しておくと、後で確認しやすい
  • PHPスクリプトがちゃんと動いているか試験環境で確認する

特にプログラミング初心者は、まずは小さなコードから試してみて、徐々に応用していくことが大切です。

まとめ

まとめ
まとめ

PHPで定期実行処理を設計するときに押さえておきたい考え方

PHPで定期実行処理を行うためには、cronとsleep、そしてusleepという三つの仕組みを適切に使い分けることがとても重要になります。とくに、毎日決まった時間に処理を動かしたい場面ではcronを使い、一定の秒数だけ間をあけながら処理したい場合にはsleep、そしてより細かな待機時間が必要なときにはusleepというように、目的に応じて選択することが基本になります。定期実行処理は、メール送信やバックアップ、データベースの定期チェック、APIの定期取得など、さまざまな場面で役立つ仕組みなので、PHPでのプログラム作成において欠かせない知識といえます。

たとえば、毎日決まった時間にまとまった処理を確実に実行したいときには、cronがもっとも向いています。cronはサーバー側で動く仕組みで、PHPを含むあらゆるプログラムを指定した時間に実行できるため、時間のずれが起きないという利点があります。また、cronはサーバーが動いている限り正確に実行されるため、長期的な運用が必要な定期タスクに向いています。一方で、短い間隔で定期処理をしたい場合や、プログラム内部で処理のタイミングを制御したい場合には、sleepやusleepがとても便利です。

sleepとusleepの使いどころを理解して設計しよう

sleepは秒単位で待ち時間を作る仕組みで、一定間隔で処理を繰り返す場面によく使われます。たとえば、APIの呼び出しがあまりにも高速で続くとエラーが発生する場合や、短い間隔のループでサーバーに負荷をかけたくない場合には、適度にsleepで待機時間を入れることが効果的です。また、ログを出力しながら定期チェックを行うような処理でもsleepは役立ちます。適切な秒数を設定することで、プログラムの負荷を抑えながら安定した動作を実現できます。

さらに細かい制御が必要な場合にはusleepを使います。usleepはマイクロ秒単位で待機できるため、0.1秒や0.5秒などの短い間隔で処理を実行したい場面で利用されます。usleepは、一見単純な機能のように思えますが、高速な処理を短い間隔で繰り返したいときにはとても便利な方法です。ただし、usleepを短すぎる間隔で使った場合にはサーバーの負荷が高くなりやすいことから、無理のない設計が必要になります。

cronとsleepの使い分けを意識した実践的なコード例

実務では、cronとPHP内部のsleepやusleepを組み合わせて、より柔軟な処理を構築することがよくあります。cronで毎時プログラムを起動し、起動後の細かい処理の間隔はsleepで制御する、といった使い方です。以下は、簡単な構成としてよく用いられるサンプルコード例です。


<?php
while (true) {
    $now = date("Y-m-d H:i:s");
    file_put_contents("/var/log/sample.log", "現在時刻: " . $now . "\n", FILE_APPEND);
    sleep(10);
}
?>

この例では、10秒ごとに現在時刻をログに記録しており、監視処理や簡易的な確認用スクリプトに応用できます。たとえば、外部サービスのステータスチェックやバックアップ前の確認作業などにも応用でき、定期実行処理の幅が大きく広がります。

先生と生徒の振り返り会話

生徒

「PHPで定期実行処理を作るときに、cronやsleepやusleepをどう使い分ければよいのかが、だいぶ理解できました。cronは決まった時間に動かすための仕組みで、sleepとusleepは処理の間隔を調整するための道具なんですね。」

先生

「その通りです。特にcronはサーバーの機能としてとても強力で、毎日や毎週のように決まった予定で実行したい処理に向いています。一方で、プログラムの中で間隔を調整したいときにはsleepやusleepが欠かせません。」

生徒

「phpでAPIを一定間隔で呼び続けたいときにはsleepを使えばよいし、もっと短い周期で実行したいときにはusleepが役立つということですよね。プログラムの動き方がだいぶイメージしやすくなりました!」

先生

「理解が深まっていて素晴らしいですね。定期処理は、設計をよく考えて使えば、本当に便利な仕組みになります。最初のうちは小さい処理を作って試してみると、cronやsleepやusleepの感覚がもっとつかめますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPでcronを使って定期実行する方法がよくわかりません。初心者向けに手順を教えてください。

cronはLinuxで使えるスケジューラで、PHPファイルを指定した時間に自動で実行できます。まずcrontabコマンドでスケジュールを登録し、実行したいPHPのパスを指定します。たとえば「毎日6時に実行」したいなら、「0 6 * * * /usr/bin/php /path/to/script.php」と設定します。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
No.7
Java&Spring記事人気No7
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.8
Java&Spring記事人気No8
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
-
-