icon
icon

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

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

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

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

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

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

目次

1時間でできる無料体験!

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

 

sleepとは

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

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

田島悠介

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

 

sleepの書き方

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

sleep(遅延させる秒数)

パラメータ

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

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

戻り値

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

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

公式ドキュメント:sleep

 

[PR] PHPプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

サンプルコード

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関数を実行したとき

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

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

実行を遅らせる関数

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秒以上動作しないように設定されているので、それ以上はできないんだよね。

 

1時間でできる無料体験!

PHPを学習中の方へ

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

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

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

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

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

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

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する