【问题标题】:Php - Bulk post 500 Apache Internal Server ErrorPhp - 批量发布 500 Apache 内部服务器错误
【发布时间】:2011-06-11 22:35:32
【问题描述】:

我有一个脚本,它只以 json 格式发送大量数据 邮寄。

最多大约 10Mb(数据被放入一个平面文件)的数据脚本运行良好,但 如果负载较高,我会从 apache 500 Internal Server Error 中得到。

我查看了我得到的 apache 日志文件

[Wed Jan 19 17:26:41 2011] [error] [client ip] Premature end of script headers: index.php
[Wed Jan 19 17:26:41 2011] [debug] mod_deflate.c(615): [client ip] Zlib: Compressed 632 to 385 : URL /index.php

你有什么想法吗?

再见。

【问题讨论】:

  • 你检查过 php.ini 中的 post_max_size 了吗?
  • 是的,它设置为 100MB(发布数据较少)

标签: php apache


【解决方案1】:

脚本标题过早结束

此消息表示 PHP 脚本在将任何内容类型输出到 apache 之前已死亡。如果您激活了 ob_* 函数,则可能是您的 PHP 脚本出现任何错误或超时,请检查 PHP 中的 set-time-limit 参数是否超时。

如果您想输出错误消息,还要检查您的异常处理是否输出正确的内容类型。

要检查所有可能产生影响的参数,您必须检查超时参数和大小限制参数。以下是其中一些:

阿帕奇:

  • LimitRequestBody

PHP:

  • post_max_size
  • upload_max_filesize
  • max_input_time
  • max_execution_time
  • 也许还有 memory_limit

【讨论】:

  • 我当前的设置:Apache LimitRequestBody 0 php.ini post_max_size = 500M upload_max_filesize = 5M max_input_time = 3600 max_execution_time = 3600 memory_limit = 128M script set_time_limit(0); ini_set("memory_limit", "1536M");但它还没有工作。
  • 尝试让你的 php 日志在一个文件(或 apache.log)中,并在 PHP 中增加日志级别。你能在 PHP 中发现一些错误吗?
  • 所以我解决了启用 php log on syslog 捕获 PHP 致命错误:在第 0 行的 Unknown 中允许的内存大小为 134217728 字节已用尽(尝试分配 38126284 字节)并在 php 中将 memory_limit 提高到 256 .ini。我不明白为什么 ini_set("memory_limit", "1536M");没用:)谢谢你的帮助伙伴:)
  • PS 服务器只有 1024MB 内存所以可能是 ini_set("memory_limit", "1536M");没用
  • 检查为什么你的脚本需要在内存中读取整个文件......我希望你没有运行magic_quote_gpc;现在你必须做一些事情来防止你的脚本中大量的内存使用,检查 Zend 框架库中的 Zend_memory 组件,也许你可以用它来交换东西。
猜你喜欢
  • 2011-10-04
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2015-11-22
  • 2018-11-14
  • 1970-01-01
相关资源
最近更新 更多