PHP同时运行脚本?

时间:2015-10-12 08:22:36

标签: php

假设我有一个运行漫长过程的PHP脚本,需要10分钟才能完成。

如果我通过浏览器执行两次脚本,那么两个请求将同时运行,或者第二个请求将保留在服务器队列中,直到第一个请求完成?

我知道pthreads扩展能够同时处理请求,但我的服务器不支持。

1 个答案:

答案 0 :(得分:2)

这取决于您如何设置apache / nginx / webserver,在默认设置中,它们将同时运行。

但是我不建议您公开一个可供外界使用的长期运行的PHP脚本。你要求被DDOS,而且,这不是一个好的用户体验。

如果你有一个你知道需要很长时间的脚本,那么有一个api端点将作业放在像beanstalkd / RabbitMQ这样的消息传递队列上,并返回processing / deferred response。然后,您可以拥有一个单独的队列工作者/许多队列工作人员,这些工作人员将查看队列并实时处理作业。

请参阅http://kr.github.io/beanstalkd/https://www.rabbitmq.com/或甚至http://redis.io/topics/pubsub