gpt4 book ai didi

php - 运行并发 PHP 脚本

转载 作者:可可西里 更新时间:2023-11-01 12:23:05 26 4
gpt4 key购买 nike

我的 VPS 服务器出现以下问题。

我有一个长时间运行的 PHP 脚本,可以将大文件发送到浏览器。它做这样的事情:

<?php
header("Content-type: application/octet-stream");
readfile("really-big-file.zip");
exit();
?>

这基本上是从服务器的文件系统读取文件并将其发送到浏览器。我不能只使用直接链接(并让 Apache 提供文件),因为应用程序中有需要应用的业务逻辑。

问题是,当此类下载正在运行时,站点不会响应其他请求。

最佳答案

您遇到的问题与您正在使用 session 这一事实有关。当脚本有一个正在运行的 session 时,它会锁定 session 文件以防止可能破坏 session 数据的并发写入。这意味着来自同一客户端的多个请求 - 使用相同的 session ID - 不会同时执行,它们将排队并且一次只能执行一个。

多个用户不会遇到此问题,因为他们将使用不同的 session ID。这并不意味着您没有问题,因为您可能想在下载文件时访问站点,或者设置一次下载多个文件。

解决方法其实很简单:调用session_write_close()在开始输出文件之前。这将关闭 session 文件,释放锁并允许执行更多并发请求。

关于php - 运行并发 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8894005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com