【发布时间】:2015-10-12 08:22:36
【问题描述】:
假设我有一个 PHP 脚本,它运行一个需要 10 分钟才能完成的漫长过程。
如果我通过浏览器执行脚本两次,两个请求将同时运行,或者第二个请求将保留在服务器队列中,直到第一个请求完成?
我知道可以同时处理请求的 pthreads 扩展,但我的服务器不支持。
【问题讨论】:
-
只要您的机器能够应付(就像现代计算机一样),它们将同时运行。
标签: php
假设我有一个 PHP 脚本,它运行一个需要 10 分钟才能完成的漫长过程。
如果我通过浏览器执行脚本两次,两个请求将同时运行,或者第二个请求将保留在服务器队列中,直到第一个请求完成?
我知道可以同时处理请求的 pthreads 扩展,但我的服务器不支持。
【问题讨论】:
标签: php
这取决于您如何设置 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
【讨论】: