オーダーメイドコース
icon
icon

PHPのsleep関数を使って実行を一時停止・遅延する方法【初心者向け】

プログラミング初心者向けにsleep関数を使って実行を一時停止、遅延する方法について解説しています。処理を行うタイミングを一時停止したり、遅らせることができるメソッドなので、指定した秒ごとに実行させることができます。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

PHPのsleep関数の使い方について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

sleep関数の使い方としては、一定秒数ごとにファイルに出力させたり、負荷の高い処理を待たせたりするために使う方法があります。

sleep関数は実行を一時停止させたり、何秒か遅らせる指定をするなど便利な関数なので、ぜひ使い方を覚えておきましょう。

目次

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

sleepとは

sleepはプログラムの実行を遅延させる関数です。

指定された秒数分、実行を遅らせることができます。

 

大石ゆかり

sleepは眠るって意味の英単語ですよね?sleep関数では、プログラムを停止させることができるんですか?

田島悠介

実際に停止するわけじゃないんだけど、実行をその時点で一時停止するんだ。

大石ゆかり

一時停止したりしている間に何かテストしたりするんですか?

田島悠介

そうそう。ファイルロックがちゃんと機能しているかなどデバッグに使うことが多いんだよ。さっそくsleep関数の書き方を見てみよう!

 

sleepの書き方

sleepは以下のように記述します。

sleep(遅延させる秒数)

パラメータ

( )内に遅延させたい秒数を数値で入力します。

また、この値が負の数の場合はエラーになります。

戻り値

戻り値でsleep関数による処理の停止が成功したかどうかがわかります。

正常に停止できた場合は0、エラーの場合は false を返します。

公式ドキュメント:sleep

 

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

サンプルコード

2秒ごとに日時を出力する処理です。

ソースコード

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <?php
      for ($i = 0; $i < 3;$i++){
        sleep(2);
        echo date( "Y/m/d (D) H:i:s", time() );
        echo "<br />";
      }
    ?>
  </body>
</html>

表示結果

解説

ここではfor文を使用して現在の時刻を3回に分けて出力し、その際に毎回sleepによる遅延を行います。

sleepの( )内には”2″を指定しているため、各実行は2秒おきに行われます。

sleepの( )内に負の数値が入力されている状態で、同じ処理を行うとエラーとなり実行されません。(エラーメッセージ”sleep( ): Number of seconds must be greater than or equal to 0″が表示されます)

 

【参考】PHPの命令で処理を止めるときの注意

Webページを表示させるコードの中でsleep関数などを使って処理を一時的に止める場合、Webページを表示しているユーザー側から見ると、Webページの読み込みが止まっているように見えます。
PHPでsleep関数を実行したとき

たとえ数秒でも処理を停止させる場合は、回線が切断されているときと区別がつかないため、事前に処理する時間がかかることを伝える表示があると親切です。

 

実行を遅らせる関数

usleep

usleepも遅延処理を行うことができる関数ですが、指定する時間の単位が違います。

usleepマイクロ秒単位で遅らせる時間を指定できます。

1マイクロ秒は100万分の1秒です。

公式ドキュメント:usleep

 

time_nanosleep

sleep関数と同じ秒指定での遅延に加えて、ナノ秒単位での遅延も指定できます。

最初の引数は遅延させる秒数、2つ目の引数は秒数に追加して遅延させるナノ秒数を指定します。

1ナノ秒は10億分の1秒です。

※遅延する時間の精度は処理装置に依存するため、指定したナノ秒以上に長くなる可能性があります。

公式ドキュメント:time_nanosleep

 

time_sleep_until

指定した時刻になるまで、処理を遅延させることができます。

time関数などで取得したタイムスタンプに、秒数を加えて指定できます。

公式ドキュメント:time_sleep_until

 

まとめ

PHPによる処理をプログラム中で、一定の時間だけ止めたい場合はsleep関数を使います。

他にもマイクロ秒やナノ秒で遅延できるusleep・time_nanosleep関数や、指定時刻まで待機できるtime_sleep_until関数もあります。

データを取得するときや、ログを書き込む時にも使える便利な関数なので、ぜひ書きながら理解していきましょう。

 

大石ゆかり

秒数だけじゃなくて、マイクロ秒なんて細かい単位で指定できるんですねー。

田島悠介

CPUの計算速度は速いからねー。

大石ゆかり

あと、思ったんですが、止める秒数っていくらでも問題ないんでしょうか?

田島悠介

レンタルサーバやローカルの開発環境だと、PHPプログラムが30秒以上動作しないように設定されているので、それ以上はできないんだよね。

 

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!