草庐IT

X-SendFile

全部标签

php - 使用 PHP 提供文件的最快方法

我正在尝试组合一个函数,该函数接收文件路径、识别它是什么、设置适当的header并像Apache一样提供它。我这样做的原因是因为我需要在提供文件之前使用PHP来处理有关请求的一些信息。速度至关重要virtual()不是一个选项必须在用户无法控制Web服务器(Apache/nginx等)的共享托管环境中工作这是我到目前为止所得到的:File::output($path); 最佳答案 我之前的回答是部分的并且没有很好的记录,这里是一个更新,其中包含来自它和讨论中其他人的解决方案的摘要。解决方案从最好的解决方案到最差的解决方案排序,但也从

php - 使用 PHP 提供文件的最快方法

我正在尝试组合一个函数,该函数接收文件路径、识别它是什么、设置适当的header并像Apache一样提供它。我这样做的原因是因为我需要在提供文件之前使用PHP来处理有关请求的一些信息。速度至关重要virtual()不是一个选项必须在用户无法控制Web服务器(Apache/nginx等)的共享托管环境中工作这是我到目前为止所得到的:File::output($path); 最佳答案 我之前的回答是部分的并且没有很好的记录,这里是一个更新,其中包含来自它和讨论中其他人的解决方案的摘要。解决方案从最好的解决方案到最差的解决方案排序,但也从

sendfile()对nginx性能的提升

Linuxkernel2.2之前,(如图)读写数据基本都是使用read系统调用和write系调用,以nginx来说如果一个请求建立,从磁盘的文件到网络连接之间会通过硬件(DMA)---内核层---用户层多次读写系统来完成文件数据的复制传输:从内核层用read系统调用读到用户层,再从用户层用write系统调用写到内核层,每一次用户层到内核层的进行一次上下文转换,这种代价是非常昂贵的。甚至在没有数据变化时这种复制尤其显得多余。如果nginx接受大量并发请求,这种系统调用就会非常频繁,服务器的性能就会下降。  在Linuxkernel2.2版本之后出现了一种叫做“零拷贝(zero-copy)”系统调

sendfile()对nginx性能的提升

Linuxkernel2.2之前,(如图)读写数据基本都是使用read系统调用和write系调用,以nginx来说如果一个请求建立,从磁盘的文件到网络连接之间会通过硬件(DMA)---内核层---用户层多次读写系统来完成文件数据的复制传输:从内核层用read系统调用读到用户层,再从用户层用write系统调用写到内核层,每一次用户层到内核层的进行一次上下文转换,这种代价是非常昂贵的。甚至在没有数据变化时这种复制尤其显得多余。如果nginx接受大量并发请求,这种系统调用就会非常频繁,服务器的性能就会下降。  在Linuxkernel2.2版本之后出现了一种叫做“零拷贝(zero-copy)”系统调