Chr*_*oom 11 php connection timeout tracking download
我的客户想要一种向用户提供下载的方法,但只有在他们填写注册表(基本上是姓名和电子邮件)之后.通过可下载内容的链接向用户发送电子邮件.链接包含对包,文件和用户唯一的注册哈希,它们实际上转到记录每次下载的PHP页面,并通过将文件写入stdout(以及相应的头文件)将文件推出.此解决方案具有固有的缺陷,但这就是他们想要这样做的方式.需要说的是,我努力推动他们1.)限制可下载文件的大小和2.)考虑使用CDN(他们有国际客户,但托管在美国在2个镜像服务器和使用粘性IP的负载均衡器上.无论如何,它"适合我" 但他们的一些国际客户的连接速度很慢(d/l速率约为60kB /秒),其中一些文件相当大(150 MB).由于这是一个提供这些文件的PHP脚本,因此它受脚本超时设置的约束.起初我把它设置为300秒(5分钟),但这对于一些测试版用户来说还不够.所以我尝试根据文件大小除以100kb /秒连接计算脚本超时,但其中一些用户甚至比这慢.
现在客户端想要提升超时值.如果脚本以某种方式进入无限循环,我不想一起删除超时.我也不想为了一些全能最低公分母连接速率而任意推出超时(大多数人的下载速度比100kb /秒快得多).而且我也希望能够在某个时候告诉客户"看,这些文件太大而无法以这种方式处理.您正在通过这些40多分钟的连接影响网站其余部分的性能.我们要么需要重新考虑如何交付或使用更小的文件."
我有几个解决方案,如下:
#1-3的机会将被拒绝或至少被推迟.4这是一个很好的方法来解决这个问题,还是有其他我没有考虑过的问题?
(随意挑战原始解决方案.)
使用 X-SENDFILE。大多数网络服务器本身或通过插件(apache)支持它。
使用此标头,您可以简单地指定本地文件路径并退出 PHP 脚本。网络服务器看到标头并提供该文件。