Php:何时使用pthread

jos*_*011 23 php multithreading pthreads die

我对使用线程知之甚少,但我查看了php的pthreads,它看起来非常有趣,容易,或者比我想象的更容易......

我搜索了一些示例并查看了文档,但是我找不到任何真实世界的例子,说明何时使用线程实际上是有益的,它确实适用于不依赖于彼此的长任务,例如执行许多http请求或也许发送邮件.

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

这会增加性能还是过多地创建线程的开销?(虽然我可以使用工作池也可以减少开销,我认为...)

任何建议或例子都非常感谢!

Joe*_*ins 93

分发中包含许多示例,可在github上获得:

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

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

线程pthreads创建与Zend本身通过多线程SAPI为服务请求设置的线程一样理智且安全.它们兼容所有相同的功能,加上您对高级线程API(几乎)的期望.

在无共享体系结构的深层实现线程总是存在局限性,但是在使用更好的物理资源方面的好处,以及PHP对于任何给定任务的整体可用性远远超过了开销的开销.在那个环境中工作.

pthreads中包含的对象可以像任何其他PHP对象一样工作,您可以从任何带有对象引用的上下文中读取,编写和执行它们的方法.

您正在考虑正确的方向:效率的衡量标准不在于应用程序执行的线程数,而是如何利用这些线程来最好地服务于应用程序的主要目的.工人是个好主意,无论你在哪里使用它们,都要这样做.

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

你不会得到更好或更正确的答案:我自己写了pthreads.

  • 我真的认为你应该用一些真实的实例和用例更新PHP文档..这样更多的人可以使用,从反馈中lib变得更好......别担心我让人们知道这个.. .. (7认同)
  • 谢谢:)我不是一个小丑,pthreads反对互联网上令人难以置信的内容,坦白说,这是错误的.如果人们对PHP所说的任何事情以及它的线程安全性或可靠性都是正确的,那么pthreads就行不通.当面对事实时,我们不明白要做的事情就是研究,不要重复你曾经读过的关于某个主题的所有内容,并将其包装成答案.我感到很失望的是,拥有如此巨大分数的人并不认为有必要进一步展望过去...... (4认同)
  • 哦,我感到很冷漠因为投入了大量精力去帮助的人,我确实觉得这是一个小丑,但希望它是可以理解的......我会详细解释过去,设计,实施和含义.以下答案:http://stackoverflow.com/questions/209774/does-php-have-threading/14548828#14548828事实是,它可能永远不会被包含在核心中(也不是apc,不要忘记成为积分吗?不需要包含在核心中,理由是看到我已经链接的帖子.谢谢你的客气话. (2认同)