我正在技术上指定一个文件上传 API,该 API 将处理大量大(250MB+)文件。
我想尽可能避免的是网络服务器在文件上传过程中耗尽全部内存,我知道在某种程度上这是可以避免的。
此外,我无法使用 Flash 或 Silverlight 来拆分文件,这可能会显着减少内存使用量。
据我所知,PHP 在很大程度上依赖于其主机 Web 服务器软件的上传性能。考虑到这一点,Apache 是最适合这项工作的还是我应该考虑 nginx 或其他?
如果 PHP 本身是最大的瓶颈,那么是否值得考虑某种混合解决方案?如果是的话,会是什么语言?
最佳答案
尽管 Daniel Ribeiro 这么说,我还是建议您远离 Apache 上传这些内容。你需要一个基于事件的服务器(Apache 的实现很好,但恕我直言,不如 nginx/lighttpd 那么完善)。问题只是间接地出现在内存上——它与客户端的数量和带宽有关。拆分文件并没有真正的帮助。
OTOH,没有什么可以阻止您使用 nginx 来处理上传并使用 apache 来提供网站的其余部分。
通过调整 TCP/IP 堆栈来处理 LFN(大拥塞窗口、tcp 窗口缩放),您将获得很多好处。
I understand that PHP is largely dependent on its host web server software for upload performance
上传的性能与 PHP 无关,除非您尝试使用原始套接字/网络套接字在后端使用 PHP 来实现上传。事实上,从 nginx 调用( fork )PHP 解释器来处理文件是有意义的 - 因为这个仅在文件上传时启动
关于php - PHP 处理大文件上传的理想 Web 服务器是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10127319/