无论如何在Linux / Windows上通过 Apache (使用浏览器)在 PHP 中使用threads
?
答案 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 似乎是一个有效的解决方案! (我没试过,所以我不能建议)