PHPで並列処理と言うと、マルチプロセスではpcntl、マルチスレッドではpthreadsを使う方法が一般的です。そのpthreadsについて、___PHP7.4以降のサポートの中止___が告知されました。PHP7から内部仕様が急速に変化しているためサポートが難しくなったようです。そこで、今後のPHPに対応できるよう新たに設計された拡張モジュールの開発が始まっています。
https://github.com/krakjoe/parallel
Parallel
Parallelはpthreadsと比べるとAPIが大きく異なります。最新のマルチスレッディングモデルを採用しているので非常に使いやすくなっています。
使用する際は7.2以降のPHPで、pthreadsと同様にZTSでコンパイルしたものが必要です。
APIに関してちょっと詳しく説明した記事を書きました。
→https://qiita.com/WhiteGrouse/items/025227aff86416a1d720
↓README.mdに記載されているコードです。
<?php
$runtime = new \parallel\Runtime();
$future = $runtime->run(function(){
for ($i = 0; $i < 500; $i++)
echo "*";
return "easy";
});
for ($i = 0; $i < 500; $i++) {
echo ".";
}
printf("\nUsing \\parallel\\Runtime is %s\n", $future->value());