【PHP】ticksを使ってみる

普通は使用されることがないticksを今回は使ってみます。


説明(引用)

tickとはdeclareブロックの実行中にパーサが N個の低レベル tick 可能な文を実行するごとに 発生するイベントのことです。Nの値は declareブロックのディレクティブの箇所で ticks=Nのように 指定します。


すべての文が tick 可能なわけではありません。 たとえば条件式や引数式などは tick できません。


tickごとに発生させるイベントはregister_tick_function() を使用して指定します。詳細は以下の例を参照してください。1回のtickで 複数のイベントが起こり得ることに注意してください。


<?php
declare(ticks=1);

// tick イベントごとにコールされる関数
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}

これだけではかなりわかりづらいです。


解説

簡単に説明しますと「declare(ticks=1)」で宣言したticksの値(実行ステップ)毎に「register_tick_function」で登録したメソッドやファンクションを実行してくれます。


サンプル

サンプルは1行ごとに時間と使用メモリーを保存。

最後に使用したメモリと実行時間を出力するようにしています。


まとめ

デバック用など様々な事に使える可能性があります。

ですが、残念なことに現在のデバッカは優秀なので使うことは基本的にはないかと思います。

自分は特殊環境でデバック用にticksを使用した経験があります。


0 件のコメント :

コメントを投稿