【 declare と tick 】

1. 概要
2. サンプル1
3. サンプル2

割り込みイベント
  • tick とは declare ブロックの実行中にパーサが n 個の低レベル命令を
    実行するごとに 発生するイベントのことです

  • n の値は declare ブロックの命令の箇所で ticks=n のように 指定します


  • # **********************************************************
    # declareブロックの実行中に低レベル命令を1つ実行するごとに
    # 発生するイベント用
    # **********************************************************
    function mytick () {
       print "|";
    }
    # **********************************************************
    # イベント登録
    # **********************************************************
    register_tick_function("mytick");
    # **********************************************************
    # イベント適用
    # **********************************************************
    declare(ticks=1);
     
    # **********************************************************
    # テスト
    # **********************************************************
    function a () {
       print "<br>" . __FUNCTION__ . " enter<br>";
       for( $i = 0; $i < 20; $i++ ) {
       }
       print "<br>" . __FUNCTION__ . " exit<br>";
    }
    function b () {
       print "<br>" . __FUNCTION__ . " enter<br>";
       print "<br>" . __FUNCTION__ . " exit<br>";
    }
     
    a();
    b();
    


    |||
    a enter
    |||||||||||||||||||||
    a exit
    |
    b enter
     
    b exit
    | 
    

    関数部分を外部に
  • 実際問題このようになると思います


  • # **********************************************************
    # declareブロックの実行中に低レベル命令を1つ実行するごとに
    # 発生するイベント用
    # **********************************************************
    function mytick () {
       print "|";
    }
    # **********************************************************
    # イベント登録
    # **********************************************************
    register_tick_function("mytick");
    # **********************************************************
    # イベント適用
    # **********************************************************
    declare(ticks=1);
     
    # **********************************************************
    # テスト
    # **********************************************************
    require_once( "sample/tickrequire.php" );
     
    a();
    b();
    


    |||||
    a enter
    |||||||||||||||||||||
    a exit
    |
    b enter
     
    b exit
    |