发行版中包含许多示例,可在 github 上找到:
https://github.com/krakjoe/pthreads/tree/master/examples
这些示例包括通用线程池、多线程套接字服务器和 SQLWorker。
pthreads 创建的线程与 Zend 本身通过多线程 SAPI 为服务请求设置的线程一样健全和安全。它们兼容所有相同的功能,以及您对高级线程 API 的所有期望(几乎)。
在无共享架构的深处实现线程总是有限制的,但是在使用更好的物理资源方面的好处,以及 PHP 对任何给定任务的整体可用性远远超过了开销在那个环境下工作。
pthread 中包含的对象与任何其他 PHP 对象一样工作,您可以从任何引用该对象的上下文中读取、写入和执行它们的方法。
您的想法完全正确:衡量效率的标准不是应用程序执行的线程数量,而是如何利用这些线程来最好地服务于应用程序的主要目的。工人是个好主意,只要你可以使用它们,就这样做。
关于您询问的具体问题,LoggingWorker 是一个好主意并且可以工作,不要尝试共享该流,因为没有意义,如果 Worker 打开日志文件或数据库连接并且由它执行的 stackables 可以访问它们。SQLWorker 再次包含在示例中,这也是 API 缺乏体面的异步 API 的另一个好主意,或者您只是更喜欢多线程编程的流程。
您不会得到更好或更正确的答案:我自己编写了 pthreads。