PHP无法检索大量请求

时间:2016-11-20 01:42:13

标签: 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:父母:创建子进程924

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

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

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

任何人都知道为什么会发生这样的事情?

1 个答案:

答案 0 :(得分:1)

我的猜测是内存限制(孩子们被服务器杀死)。你可以增加它,但它不会解决问题 - 当你有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