Php:何时使用 pthread

标签 php multithreading pthreads die

我对使用线程了解不多,但我研究了 php 的 pthreads,它看起来非常有趣和简单,或者比我想象的更容易......

我搜索了示例并查看了文档,但我找不到任何真实世界的示例说明何时使用线程实际上是有益的,它肯定适用于不依赖于彼此的长期任务,比如做很多http 请求或发送邮件。

但是呢 写日志条目? 插入数据库? (比如跟踪用户事件) 从数据库中获取(我可以从线程返回数据吗?)

这会提高性能还是创建线程的开销太大? (虽然我也可以使用工作池来减少开销,但我认为...)

非常感谢任何建议或示例!

最佳答案

发行版中包含许多示例,可在 github 上找到:

https://github.com/krakjoe/pthreads/tree/master/examples

这些示例包括通用线程池、多线程套接字服务器和 SQLWorker。

pthreads 创建的线程与 Zend 本身为通过多线程 SAPI 为请求提供服务的线程一样健全和安全。它们兼容所有相同的功能,以及您对高级线程 API 的所有期望(几乎)。

在无共享架构的深处实现线程总是有限制的,但是在使用更好的物理资源方面的好处,以及 PHP 对任何给定任务的整体可用性都远远超过在这种环境下工作的开销。

pthreads 中包含的对象与任何其他 PHP 对象一样工作,您可以从任何引用该对象的上下文中读取、写入和执行它们的方法。

您的思路完全正确:衡量效率的标准不是应用程序执行的线程数,而是如何利用这些线程来最好地服务于应用程序的主要目的。 worker 是个好主意,无论你在哪里可以使用它们。

关于您询问的具体问题,LoggingWorker 是一个好主意并且可以工作,不要尝试共享该流,因为没有意义,如果 Worker 打开日志文件,它将非常稳定,或者由它执行的数据库连接和堆栈可以访问它们。示例中还包含一个 SQLWorker,这也是 API 缺乏体面的异步 API 的另一个好主意,或者您只是更喜欢多线程编程流程。

您不会得到更好或更正确的答案:我自己编写了 pthreads。

关于Php:何时使用 pthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14126696/

相关文章:

c - 即使在下一次迭代之后,是否在循环中局部声明了一个变量,该循环创建了一个可以在被调用线程中安全使用的线程?

php - 向数据库插入值时删除记录

php - 在没有反斜杠的命名空间中使用函数

php - 使用 PHP、Ajax 和 Jquery 更改密码

c++ - 如何在不同的线程中执行 QTcpSocket?

multithreading - 同步生产者、消费者和生产者队列

c - 使用 C/Pthreads : do shared variables need to be volatile?

c++ - 我可以同时锁定多个变量吗?

php 函数回显 javascript 字符串

c - gcc:编译为 BSS 的线程局部变量