【PHP入門】プログラムの実行を一時停止する方法(sleep)

こんにちは!フリーエンジニアのヤマシタです。

PHPではsleep関数を使用してプログラムの実行を一時停止することができます。

この記事では、

・sleepとは?
・sleepの使い方

という基本的な内容から、

・ループでsleepを使用する方法
・マイクロ秒単位で一時停止する方法

などの応用的な使い方に関しても解説していきます。

今回はそんなsleepを使用する方法について、わかりやすく解説します!

sleepとは

実行中のプログラムを一時停止するには、sleep関数を使用します。

sleep関数は、引数に一時停止する秒数を指定します。10秒スリープするなら引数に10を指定します。

int sleep (int $秒数);

返り値として、成功した場合にはゼロを、失敗した場合にはFALSEを返します。

FALSEを返すタイミングとしては、プログラムが何らかのエラーにより、シグナルを受信した場合に発生します。

sleepの使い方

ここでは、実際にsleep関数の使い方を見ていきましょう。

以下に指定した秒数分処理を一時停止するサンプルを紹介いたします。

<?php

echo date('Y-m-d H:i:s');
echo '<br>';

//10秒スリープ
sleep(10);

echo date('Y-m-d H:i:s');

?>
実行結果
2017-05-28 09:44:03
2017-05-28 09:44:13

サンプルではsleep関数の引数に一時停止する秒数として10を指定しています。実行結果のとおり10秒処理が一時停止していることがわかりますね!

ループ処理を一時停止する

以下に無限ループ内で繰り返し処理ごとにをsleepで1秒停止するプログラムを紹介します。

<?php

$i = 0;
while(true){

  echo $i;

  if ($i >= 10){
    echo 'プログラム終了';
    break;
  }
  sleep(1);
  $i++;
}

?>

sleep関数は、主に時間を計測するためのタイマー処理や、マルチスレッドなどで行う無限ループ処理などでよく使われます。

無限ループ処理を延々と実行しているとCPUの負荷が高まり、リソースが不足してメモリリークなどが発生する可能性があります。

また、無限ループの間はコンピュータの負荷が高まるため、他の処理が受付なくなるなどの弊害が発生します。

そこで無限ループ内でsleep処理を実行すると、その間処理がsleep関数に移行してコンピュータの負荷を下げることができます。

そのため、無限ループ処理を行うときは、sleep関数の使用を意識しておきましょう。

マイクロ秒単位で指定する

ここではusleep関数を使用して、マイクロ秒単位まで停止時間を指定する方法を紹介します。

usleepの使い方

プログラムをマイクロ秒単位で一時停止するにはusleep関数を使用します。

usleep関数は、sleep関数と同じく引数に一時停止する秒数を指定します。

void usleep(int $マイクロ秒数);

なお、usleep関数は値を返すことはありません。

以下にusleep関数を使用してマイクロ秒単位で一時停止する方法を記述します。

<?php

$now1 = new DateTime();

//時刻をマイクロ秒まで取得
echo $now1->format('Y-m-d H:i:s.u');
echo '<br>';

//0.2秒スリープ
usleep(200000);

$now2 = new DateTime();
echo $now2->format('Y-m-d H:i:s.u');

?>
実行結果
2017-05-28 19:21:58.506058
2017-05-28 19:21:58.707265

サンプルでは、usleep関数の引数でマイクロ秒単位の秒数である200000マイクロ秒(0.2秒)を指定しています。

実行結果のとおり、約0.2秒停止しているのがわかりますね!

まとめ

ここではsleep関数を使用して、プログラムを一時停止する方法や無限ループで使用する方法、sleep関数の用途やusleep関数を使用してマイクロ秒単位で指定する方法などを解説しました。

sleep関数は処理時間を計測したり、マルチスレッドや無限ループなどの処理でよく使われますので、この機会に覚えておきましょう。

もし、sleep関数の使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。