いけむランド

はてダからやってきました

PHP の Thread を試してみる

PHP でスレッドを使いたいとお嘆きのあなたは使ってみるといいんじゃないかな。

マニュアルは公式サイトの方が読みやすいと思われる。


残念なことに使用するには --enable-maintainer-zts を有効にして再ビルドする必要がある。

  --enable-maintainer-zts Enable thread safety - for code maintainers only!!


phpbrew の場合は -- オプションで configure への引数を追加できる。

% phpbrew install php-5.4.7 -- --enable-maintainer-zts


zts を有効にしたら pecl でぶっこみます。github から archive を持ってくる必要なんてなかったんや...。

% pecl install pthreads-beta


あとは Thread クラスを継承したクラスを書くだけです。ね?簡単でしょ?


% php ./ThreadExample.php
ID[4340998144] : start & sleep
ID[4342120448] : start & sleep
ID[4343242752] : start & sleep
ID[4344365056] : start & sleep
ID[4345487360] : start & sleep
ID[4345487360] : done
ID[4346609664] : start & sleep
ID[4347731968] : start & sleep
ID[4348268544] : start & sleep
ID[4349128704] : start & sleep
ID[4349988864] : start & sleep
ID[4343242752] : done
ID[4340998144] : done
ID[4346609664] : done
ID[4348268544] : done
ID[4349128704] : done
ID[4349988864] : done
ID[4344365056] : done
ID[4342120448] : done
ID[4347731968] : done
%


【追記】ブクマがそこそこあったので補足しておきますが、run() の中で date() を呼んだら Segmentation Fault が発生したり、property を定義しても何故か未定義になってしまうので、まだまだ実用はできない状態です。