17章非同期PHP

基本的なPHPスクリプトの多くは、処理を同期的に処理します。つまり、スクリプトは最初から最後まで1つのモノリシックなプロセスを実行し、一度に1つのことしか実行しません。しかし、PHPの世界では、より洗練されたアプリケーションが一般的になり、より高度な操作モードが求められています。すなわち、非同期プログラミングという概念が、PHP開発者の間で急速に台頭してきています。スクリプトの中で2つ(あるいはそれ以上)のことを同時に行う方法を学ぶことは、現代的なアプリケーションを構築するために不可欠です。

非同期プログラミングについて議論する際には、2つの単語、つまり、「並行」と「並列」が頻繁に出てきます。多くの人が並列プログラミングについて話すとき、実際に意味しているのは「並行プログラミング」です。並行プログラミングでは、アプリケーションは2つのことを行いますが、必ずしも同時に行うわけではありません。1人のバリスタが一度に複数のお客にサービスを提供することを思い浮かべてください。バリスタはマルチタスクで複数の異なる飲み物を作っていますが、実際には一度に1つの飲み物しか作れません。

並列処理では、2つの異なることを同時に行うことになります。カフェのカウンタにコーヒーマシンが設置されているとします。バリスタからコーヒーの提供を受ける客もいますが、コーヒーマシンからコーヒーの提供を受ける客もいます。並行処理と並列処理をバリスタとコーヒーマシンに例えたものを図17-1に示します。

図17-1 並行処理と並列処理

「並行並列処理」という第三の概念もあります。これは、2つの動作するストリームが同時に(並列)動作し、個々のストリームも(並行)マルチタスク処理を行う場合です。この複合概念は有用ですが、この章では、代わりに2つの個別の概念だけに焦点を当てます。 ...

Get PHPクックブック ―モダンPHPによるWebアプリケーション実用レシピ集 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.