PHP 无法检索大请求

标签 php mysql json apache pdo

我正在使用 php 创建一个服务,该服务从包含 2100 行的表中返回 json 数据。我在开发中使用以下设置:

  • 使用 Apache 和 MySql 的 Xampp
  • Windows 10
  • PHP-7.0.8

在php中使用PDO来执行查询

该服务对于小型请求(30 行)和整个表都运行良好。我经常调用它,但没有遇到任何问题。最近它停止处理返回整个表的请求,只处理较小的请求。

我检查了 Apache 错误日志并得到以下信息:

[Sun Nov 20 11:06:06.687051 2016] [mpm_winnt:notice] [pid 4576:tid 536] AH00428:父进程:子进程 11908 已退出,状态为 1 -- 正在重新启动。

[Sun Nov 20 11:06:06.889267 2016] [mpm_winnt:notice] [pid 4576:tid 536] AH00418: Parent: Created child process 924

[Sun Nov 20 11:06:07.415857 2016] [ssl:warn] [pid 924:tid 436] AH01909: www.example.com:443:0 服务器证书不包含与服务器名称匹配的 ID

[Sun Nov 20 11:06:07.442378 2016] [mpm_winnt:notice] [pid 924:tid 436] AH00354: child :启动 150 个工作线程。

虽然我不确定问题是什么,但为了有效搜索,我已经搜索了解决方案。上面的每条错误消息似乎都给我提供了与我遇到的问题无关的答案(尽管我不完全确定问题是什么)。

有人知道为什么会发生这样的事情吗?

最佳答案

我的猜测是内存限制( child 被服务器杀死)。您可以增加它,但它不会解决问题 - 当您有 100 万条记录时会发生什么?

我的建议是您实现分页参数和要返回的最大记录数:

http://website.com/api/v1/getUsers?position=0
http://website.com/api/v1/getUsers?position=100
http://website.com/api/v1/getUsers?position=200
etc..

这将大大降低您系统的压力,并使用户能够在他们只想要前 x 条记录、最后 2 条记录等的情况下降低吞吐量。

如果您仍然希望能够为所有人提供服务,您可以查看此线程以了解如何增加 Apache 的内存:https://stackoverflow.com/a/36920556/1935500

关于PHP 无法检索大请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40699817/

相关文章:

php - Mysqli::real_connect() 每 24 小时断开一次管道

Python JSON 模块不会为无效的 JSON 抛出异常

javascript - 将 json 从 js 传递到 java 的 url 问题

javascript - 向我的网站添加 Twitter 分享按钮

php - 警告 : mysql_num_rows() expects parameter 1 to be resource, boolean 值

php - 如何使用 PHP 确定文件年龄?

javascript - Extjs 6 网格 + JSON

javascript - Piwik : How do I track a visitor (User ID) across domains (PHP/JS)?

mysql - nginx-tornado-django 请求超时

mysql - 寻找主服务器数据库环境来运行 SQL 查询