gpt4 book ai didi

php - 同时多个php请求,第二个请求直到第一次完成才开始

转载 作者:行者123 更新时间:2023-12-03 11:22:45 25 4
gpt4 key购买 nike

我有一个长期运行的 php 7.2 脚本,它正在生成一个 zip 文件。我想使用循环 ajax 调用来检查构建 zip 文件的进度。第二个脚本似乎被锁定,并且在第一个脚本完成之前不会开始处理。

事实上,在第一个脚本完全完成之前,第二个脚本甚至不会在我的 index.php 路由脚本的第 1 行打印 error_log() 。

我的顶index.php路由器脚本:

<?
error_log('top of index '.$_SERVER['REQUEST_URI']);

即使我只是请求静态图像资源也是如此。在长时间运行的脚本完全完成之前,第 1 行的 error_log() 甚至不会打印。

起初,我以为我遇到了 Session Locking as described here但他们提供的解决方案似乎不起作用(调用 session_write_close() ),我想知道是否还有其他事情发生,因为第二个脚本在第 1 行之前锁定而不是在我尝试启动 session 时锁定.第二个脚本似乎根本没有开始。我想也许服务器在第 1 行之前自动启动了 session ,但我检查了一下,我的服务器有 session.auto_start=0。

我需要设置一些服务器配置吗?

我错过了什么?我究竟做错了什么?

我使用内置的 PHP 服务器在本地主机(Mac)上运行它。
php -c /usr/local/etc/php/7.2/php.ini -S 127.0.0.1:8080 index.php

最佳答案

这是因为 PHP 服务器默认只使用一个进程,这会阻止它同时执行多个请求。
内置服务器从 PHP 7.4 开始支持多个 worker(在 fork() 可用的平台上)。看到这个提交:https://github.com/php/php-src/commit/82effb3fc7bcab0efcc343b3e03355f5f2f663c9
要使用它,请在启动服务器之前添加 PHP_CLI_SERVER_WORKERS 环境变量。例如:

PHP_CLI_SERVER_WORKERS=10 php7.4 -S 127.0.0.1:7080 index.php
如果您想使用此功能,我建议升级您的 PHP 7.2 安装。

关于php - 同时多个php请求,第二个请求直到第一次完成才开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60424181/

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