PHP 8 で Web 以外の世界の扉を叩く by sji

PHPerKaigi 2021
レギュラートーク(40分)

PHP 8 で Web 以外の世界の扉を叩く

sji_ch sji sji_ch
4

※ PHP カンファレンス 2020 でお話した内容の改訂版です。図表が増えたりデモを失敗しなくなったりします!

PHP は "PHP: Hypertext Preprocessor" の略ですが、この 25 年間で Web は高度化し、複雑化し、それに伴い Web サイトを作るための言語にも、いっそう複雑な機能が要求されるようになってきました。

昨年リリースされた PHP 8 では、満を持して JIT コンパイラ が導入されました。

典型的な PHP アプリケーションは I/O バウンド(DB バウンド)です。JIT はそのような既存のアプリケーションのためというより、これまで PHP が使われてこなかった、使えると思われてもこなかったような、新たな領域への扉を開くものとして、FFI や Preloading との組み合わせを念頭に提案されたものです。

一方、世間の CPU は着実に多コアの時代へと進んできました。今の時代にある程度 CPU を使うアプリケーションを作ることは、JIT を使うだけの話では済まず、何らかの並列処理機構を用いこの多コアの CPU とも向き合う必要があります。

このトークではそんな新時代における PHP を使い、

  • FFI でシステムコールを呼び出し外部プロセスのメモリをのぞき見たり
  • (非 Web の) GUI ライブラリを利用してデータを可視化したり
  • ext-parallel によりプログラムをマルチスレッド動作させたり
  • スレッドの動作効率化ため preloading を活用したり
  • JIT によりそのようなプログラム全体の動作を高速化したり

といった、一味違った PHP の利用方法への挑戦を紹介するとともに、そこで得られた知見、現状の制限についてお話します。