请教php pthread后台处理的问题!

WBOY
Freigeben: 2016-06-23 13:49:10
Original
1067 Leute haben es durchsucht

我现在想实现,在特定一个请求后创建一个后台线程并一直运行,且该线程不会阻塞当前的请求。

在实现的过程中,发现后台线程会阻塞当前请求,导致页面一直在等待没数据,如果执行Thread::detach的话,会有段错误如下,官方文档不建议使用该方法,不知道是否跟这个错误有关:

[Sun Sep 14 11:13:03.819745 2014] [core:notice] [pid 14343] AH00052: child pid 14847 exit signal Segmentation fault (11)
Nach dem Login kopieren


谢谢!


回复讨论(解决方案)

不用detach需要等待子进程结束  当然会阻塞请求  

detach和现有扩展冲突的可能性很大

建议采用消息队列来实现这种功能

用啥多线程,直接后台异步运行个脚本完事,就一句代码,并且不会阻塞当前进程
代码如下:
exec("php task.php > /dev/null &")

不用detach需要等待子进程结束  当然会阻塞请求  

detach和现有扩展冲突的可能性很大

建议采用消息队列来实现这种功能



通信数据量比较大,消息队列不太合适,查了下觉得用命令管道来做更适合。

用啥多线程,直接后台异步运行个脚本完事,就一句代码,并且不会阻塞当前进程
代码如下:
exec("php task.php > /dev/null &")


这也是个办法,但当并发量大的话,我担心消耗的资源会太多,之所以想把这些处理提到后台做,是因为需要花的时间较长。
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage