使用Apache和PHP使用线程

时间:2014-11-23 14:23:59

标签: php linux windows multithreading apache

无论如何在Linux / Windows上通过 Apache (使用浏览器)在 PHP 中使用threads

2 个答案:

答案 0 :(得分:3)

事实上可以做某事,无论是否合适都没有说明。

事实是,pthreads + PHP使用的线程模型是1:1,也就是说一个用户线程到一个内核线程。

在apache内部的Web应用程序的前端部署此模型并没有多大意义;如果前端控制器指示硬件甚至创建少量线程,例如8个,并且100个客户端同时请求控制器,那么您将要求硬件执行800个线程。

pthreads可以部署在apache中,但不应该。你应该做的是尝试隔离应用程序中那些需要线程提供的部分,并通过一些理智的RPC与孤立的多线程子系统进行通信。

我写过pthreads,请听。

答案 1 :(得分:1)

非常沮丧。

pcntl_fork函数,如果在你的设置中完全允许的话,将分叉Apache工作者本身,而不是脚本,并且很可能你不能在它之后声明子进程#&# 39;完了。 这导致了许多僵尸Apache进程。

我建议使用后台工作池,正确运行作为守护程序/服务,或至少从启动控制台正确分离(例如使用screen),同步PHP / Apache脚本会将作业请求推送到这个游泳池,使用插座。

有帮助吗?

[编辑]我会提供以上作为一个意见,但我没有足够的声誉这样做(我发现它很奇怪顺便说一句,因为你太初级而无法发表评论)。 / p>

[Edit2] pthread 似乎是一个有效的解决方案! (我没试过,所以我不能建议)