Your SlideShare is downloading. ×
Immortal
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Immortal

2,317
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,317
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. immortalというモジュールを作ろうとしている話 2013/03/02 闇PHP勉強会 do_aki
  • 2. @do_akihttp://do-aki.net/
  • 3. immortal[形]1 死なない, 不死(身)の(⇔mortal).2 不朽の;不滅の3 永久の, 不変の4 《生物》〈培養中の細胞が〉限りなく生長[分裂]する.
  • 4. 不死身
  • 5. <?php sampleimmortalize();function I_will_be_back() { die("die!");}I_will_be_back();print “alive!"; 掲載のコードはイメージです
  • 6. 実装
  • 7. zend_set_user_opcode_handler で ZEND_EXIT をフック• zend_set_user_opcode_handler opcode => opcode の実行をフックできる関数 (Zend/zend_execute.c)• ZEND_EXIT => exit および die の opcode (Zend/zend_vm_opcodes.h)
  • 8. ZEND_API intzend_set_user_opcode_handler( zend_uchar opcode, user_opcode_handler_t handler)
  • 9. user_opcode_handler_t• zend_execute_data *execute_data を引数に とって、 int を返す関数型• 戻り値の int は Zend/zend_execute.h で定義 された値 – ZEND_USER_OPCODE_CONTINUE – ZEND_USER_OPCODE_RETURN – ZEND_USER_OPCODE_DISPATCH etc…
  • 10. zend extension と php extension• ロード時に探されるシンボルが異なる – zend : zend_extension_entry シンボル – php : get_module シンボル• 大きな違いはないが、読み込まれるタイ ミングが違う
  • 11. • zend_set_user_opcode_handler による opcode フックを実現するには、zend extension として呼び出される必要がある。
  • 12. 今後
  • 13. • 事前に登録した phpの function を exit 時に コールするとか• 例外起こしてみるとか• ま、それ以前に、使い道探したいね
  • 14. おしまい
  • 15. おまけ• GNU Global の話が出てきたので、htags の オススメのオプション• htags -Faghnsv --tree-view --show-position – fD• サーバにcgi置いて検索できるようにして おくとすんげー便利