PHP5.5 の優れた新機能の 1 つは、ジェネレーターとコルーチンのサポートです。ジェネレーターについては、PHP のドキュメントや他のさまざまなブログ投稿 (この投稿やこの記事など) ですでに詳しく説明されています。コルーチンは比較的注目されていないため、コルーチンは非常に強力な機能を持っていますが、知るのが難しく、説明するのも困難です。
ジェネレーターの最も基本的な考え方も関数です。この関数の戻り値は、単一の値を返すのではなく、順番に出力されます。言い換えれば、ジェネレーターを使用すると、反復子インターフェースの実装が容易になります。以下は、xrange 関数を実装して簡単に説明します。
a16c2728cc22c9ecce504562e4e79528
在这篇文章里,我使用多任务协作构建了一个任务调度器,其中包括执行“系统调用”,做非阻塞操作和处理错误。所有这些里真正很酷的事情是任务的结果代码看起来完全同步,甚至任务正在执行大量的异步操作的时候也是这样。如果你打算从套接口读取数据的话,你将不需要传递某个回调函数或者注册一个事件侦听器。相反,你只要书写yield $socket->read()。这儿大部分都是你常常也要编写的,只在它的前面增加yield。
当我第一次听到所有这一切的时候,我发现这个概念完全令人折服,而且正是这个激励我在PHP中实现了它。同时我发现协程真正令人心慌。在令人敬畏的代码和很大一堆代码之间只有单薄的一行,我认为协程正好处在这一行上。讲讲使用上面所述的方法书写异步代码是否真的有益对我来说很难。
以上がPHPにおける協調マルチタスクの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。