【问题标题】:PHP Unable to retrieve large requestsPHP 无法检索大型请求
【发布时间】:2017-04-03 15:31:15
【问题描述】:

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

  • Xampp 与 Apache 和 MySql
  • 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

[2016 年 11 月 20 日星期日 11:06:07.442378] [mpm_winnt:notice] [pid 924:tid 436] AH00354:子级:启动 150 个工作线程。

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

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

【问题讨论】:

    标签: php mysql json apache pdo


    【解决方案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

    【讨论】:

    • 哦,我明白了。我会将其设置为分页。谢谢你
    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 2023-03-12
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多