如何强制浏览器等待 php 服务器发送响应?

How to force browser to wait until php server sends a response?

我有以下设置:

所以,服务器B有很多数据供用户在需要时下载。客户端向服务器A发送请求请求该文件,服务器A通过SSH连接到服务器B并执行多项任务(包括解密和压缩),这些任务完成后在服务器B上生成一个zip文件,然后服务器A重定向使用 header("Location: https://serverb.com/index.php?file=thefileiwant.zip").

发出的请求

问题是如果有很多文件(我正在测试 50 个),则下载的 zip 文件为 0 字节。对于少量文件,一切正常所以我认为问题是解密和压缩花费的时间太长,服务器只是发送和清空文件,因为请求超时...

我该如何解决这个问题?

编辑以添加更多信息:

如@IdontDownVote 所述,问题不在于浏览器没有等待,而是 ssh 连接的问题:

这是我压缩文件的方式:

ssh2_exec($connection, 'zip -j '.$path.$zipname.'.zip '.$path.'*.txt '.$path.'*.3gp');

问题是这只是将命令发送到服务器 B 并跳转到下一行,因此 zip 文件从未完成。我意识到,当我看到几个文件的名称模式类似于 zid5Jhn 而不是实际的 zip 文件(这与@IdontDownVote 评论一起)

我使用我用来获取命令输出的函数解决了这个问题:

function get_command_return($connection, $command){
    $stream = ssh2_exec($connection, $command);
    stream_set_blocking($stream, true);
    $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
    return stream_get_contents($stream_out);
}

所以我通过更改 ssh2_exec(...) to get_command_return(...) 解决了它,尽管我认为只有行 stream_set_blocking($stream, true); 是必要的

谢谢