PHP处理大型文件上传的理想Web服务器?

时间:2012-04-12 15:58:42

标签: php apache http upload nginx

我正在从技术上指出一个文件上传API,它将处理很多大型(250MB +)文件。

我想尽可能避免的是网络服务器在文件上传期间占用了大量内存,我知道在某种程度上可以避免这种情况。

另外,我不能使用Flash或Silverlight来分割文件,这可能会大大减少内存使用量。

据我所知,PHP在很大程度上依赖于其主机Web服务器软件来提升上传性能。考虑到这一点,Apache是​​最适合这项工作的,还是我应该考虑使用nginx还是其他人?

如果PHP本身是最大的瓶颈,那么考虑某种混合解决方案是否值得?如果是这样,它会是什么语言?

3 个答案:

答案 0 :(得分:2)

尽管Daniel Ribeiro说道,但我建议你保持这些上传远离Apache。你需要一个基于事件的服务器(Apache的实现很好,但是恕我直言,不像nginx / lighttpd那样优秀)。问题只是间接地是内存 - 它是关于客户端和带宽的数量。拆分文件实际上并没有帮助。

OTOH没有什么可以阻止你使用nginx处理上传和apache来提供网站的其余部分。

通过调整TCP / IP堆栈来处理LFN(大拥塞窗口,tcp窗口缩放),您将获得很多好处。

  

据我所知,PHP在很大程度上依赖于其主机网络服务器软件来提升上传性能

上传的性能与PHP无关,除非您尝试在后端使用带有PHP的原始套接字/ Web套接字实现上传。实际上,从nginx调用(分叉)PHP解释器来处理文件是有意义的 - 因为只有在文件上传时才会启动

答案 1 :(得分:1)

您可以同时使用Apache和Nginx,而且非常非常棒!

两者之间的一些比较是:

  • Apache是​​一个基于进程的服务器; nginx,一个基于事件的服务器。
  • Nginx和Lighttpd可能是两个最着名的异步服务器;
  • Apache无疑是最着名的基于进程的服务器。

Further info here

答案 2 :(得分:1)

我会考虑将nginxfile upload模块一起使用,因为您可以避免通过PHP传递上传。