php - 执行 Mysql 查询时网站无法加载

标签 php mysql apache2

我在一台机器上有 MySQL 5.7 服务器。 网站在其他机器上。

当我尝试按 F5 20 次 PHP mysql 脚本时,该脚本需要 1 秒才能执行,它将卡住每个人的整个网站 20 秒

我尝试在 nginx、apache2 上运行这个,所以我猜是 mysql 或网站问题。

查询可以是简单的循环中的SELECT,我使用mysqli_query

当我检查完整进程列表时,它只向我显示了网站用户的一个进程,并且所有进程都在队列中执行,直到我停止刷新,主要问题是当我执行此操作时其他用户无法加载网站。

最佳答案

一次只能有一个 PHP 进程打开给定的 session ,尝试打开该 session 的所有后续请求都将被阻止,直到该 session 关闭为止。导致出现您所描述的问题。

如果您从 session 中获得了所需的所有内容,并且不打算在其中写入更多内容,那么您可以调用 session_write_close()释放 session 以用于其他请求。

例如:

<?php
session_start();

// init

session_write_close();

$dbh->query('SELECT super_long_time_stuff FROM foo');

编辑:值得注意的是,这不会导致“所有用户”无法加载页面,只会导致通过发出长时间运行的请求锁定自己的 session 的任何用户。

关于php - 执行 Mysql 查询时网站无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47402673/

相关文章:

php - 如何在 Wordpress 管理员中获取帖子 ID

php - Zend Framework - 如何从 Action 助手中调用 Controller 的 redirect()

php - MYSQL连接和计数语法错误

mysql - 如何在 mysql 连接中选择可能不存在的行

PHP MYSQL 选择查询从列中删除空格

apache2 - 模块 wsgi_module 已加载,正在跳过

php - 加载 xdebug 的 zend_extension 时本地主机站点出现黑屏问题? (Win 7, Apache 2.2, cakePHP 1.2)

php - 使用 PHP(多个图像)更改图像覆盖框内容。纯CSS

php - php 中的多个 mysql 查询

apache - .htaccess 编码已编码的 URL