Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP同时下载多个文件-分叉、套接字_Php_File_Download_Fork - Fatal编程技术网

使用PHP同时下载多个文件-分叉、套接字

使用PHP同时下载多个文件-分叉、套接字,php,file,download,fork,Php,File,Download,Fork,我正在使用以下代码管理从我的网站下载的文件,这些文件都在验证码后面: 问题是,当一个文件被下载时,它会锁定站点的其余部分,并且不可能同时下载另一个文件。”锁定,例如,当下载正在进行时,试图转到主页会导致长时间等待。主页仅在下载完成或取消时显示。这是一个问题,因为有些文件有几百MB 我希望发生两件事:1-能够在下载文件时浏览网站,2-能够下载另一个文件或两个、三个或十个。。。同时 我的直觉是我需要改变这个过程,创建一个新的过程,或者打开另一个插座。但我已经超出了我的深度,即使这是正确的方法,我也不

我正在使用以下代码管理从我的网站下载的文件,这些文件都在验证码后面:

问题是,当一个文件被下载时,它会锁定站点的其余部分,并且不可能同时下载另一个文件。”锁定,例如,当下载正在进行时,试图转到主页会导致长时间等待。主页仅在下载完成或取消时显示。这是一个问题,因为有些文件有几百MB

我希望发生两件事:1-能够在下载文件时浏览网站,2-能够下载另一个文件或两个、三个或十个。。。同时

我的直觉是我需要改变这个过程,创建一个新的过程,或者打开另一个插座。但我已经超出了我的深度,即使这是正确的方法,我也不知道怎么做。有什么想法吗,伙计们

非常感谢

编辑-- 我找到了!在下载脚本中设置标题之前,我添加了session\u write\u close。显然,这种行为是由于PHP会话处理造成的——这里有更多信息:我在询问之前搜索了又搜索,但显然错过了这篇文章。
非常感谢……

内容交付网络CDN将从您的服务器上卸载,允许您的服务器处理主页或其他页面请求,并允许许多、许多同时下载。它的带宽应该更便宜,对大多数用户来说也可能更快


关键是配置为仅在验证码后保护文件,而不是像大多数CDN设置一样免费提供。

您绝对不需要在PHP中实现这一点,也不应该尝试这样做。套接字被打开,并行请求被处理得远远低于PHP级别。Apache或您正在使用的任何服务器都将为您完成此任务。如果您的站点一次只允许一个请求,则需要正确配置服务器软件。您所经历的行为听起来非常像PHP在用户会话上设置的普通独占锁。虽然示例代码不使用会话,但也许您已经修改了它以使用会话?Charles-我使用了!用于验证码验证。我找到了解决方案,请参见我的上面的编辑。感谢您抽出时间回复各位。