MY Page-4

同時に二つのページを呼んでみます。

プログラムの説明

  1. index.html にテストする PHP のリンクを設定します。
    <html>
    <head>
    <meta charset=utf-8>
    <link rel="stylesheet" href="php.css" type="text/css">
    <title>Index</title>
    </head>
    
    <body>
    <h1>ビルトインサーバー</h1>
    
    <ol>
      <li><a href="sleep_a.php">sleep で時間を置いてカウントする A</a><br>
      <li><a href="sleep_b.php">sleep で時間を置いてカウントする B</a><br>
      <li><a href="sleep.php">sleep_a, sleep_b を連続起動</a><br>
    </ol>
    
    <h2><a href="_php.html">超初心者のプログラム入門(_php.html)</a><br>
    
    </body>
    </html>
    
  2. sleep_a.php, sleep_b.php は、sleep で時間を置いてカウンターを印字するプログラムです。
    sleep.php が呼ばれると、sleep_a.php と sleep_b.php を続けて起動します。
  3. sleep_a.php を utf-8(BOM 有り)でタイプします。
    sleep_b.php もこれに準じます。
    <?php
    print "sleep で時間を置いてカウントする\r\n<br>";
    for($n=0; $n<5; $n++)
    {
        sleep(3);
        print("n : " . $n . "\r\n<br>");
        error_log("sleep_a $n\n", 3, 'app.log');
    }
    print "終了\r\n<br>";
    ?>
    
  4. sleep.php を utf-8(BOM 有り)でタイプします。
    sleep_a.php と sleep_b.php を続けて起動します。
    <?php
    print "sleep_a, sleep_b を連続して起動する\r\n<br>";
    print "sleep_a.php を起動します\r\n<br>";
    require("sleep_a.php");
    print "sleep_b.php を起動します\r\n<br>";
    require("sleep_b.php");
    ?>
    
  5. 実行の履歴が 'app.log' に記録されています。
    sleep_a を起動して my_page4 に戻ると sleep_a の実行が中断されます。
    次に sleep_b を起動すると sleep_b のカウントが始まります。
    AとBが同時に実行されることは無いようです。
    sleep_a 0
    sleep_a 1
    sleep_b 0
    sleep_b 1
    sleep_b 2
    sleep_b 3
    sleep_b 4
    
  6. sleep.php が呼ばれると sleep_a.php が終了してから sleep_b.php が実行されます。
    最後に30秒を超えタイムオーバーで中断しました。
    sleep_a, sleep_b を連続して起動する 
    sleep_a.php を起動します 
    sleep で時間を置いてカウントする 
    n : 0 
    n : 1 
    n : 2 
    n : 3 
    n : 4 
    終了 
    sleep_b.php を起動します 
    sleep で時間を置いてカウントする 
    n : 0 
    n : 1 
    n : 2 
    n : 3 
    
    Fatal error: Maximum execution time of 30 seconds exceeded in C:\HTML\PUBLIC\PHP\sleep_b.php on line 6
    

前田稔の超初心者のプログラム入門
PHP Program