我有一个带有简单 mysql 查询的 php 脚本,SELECT
它从数据库中提取了 1000 多行数据...
当我需要获取大量行时,它会多次出现 500 内部服务器错误。
当我从 unix shell 命令运行该脚本时,该脚本运行良好:
/usr/bin/php scriptname.php
它是一个带有apache + php fcgi的服务器。
请帮忙——谢谢!
答案1
我认为你可能遇到了 Fcgi 超时。脚本运行需要多长时间?Apache 怎么error_log
说?你尝试过更改FcgidBusyTimeout 指令在 Apache 配置中?
答案2
您的脚本可能超出了超时限制。您应该使用set_time_limit 函数。
答案3
如何更改您的脚本,只返回一部分行(例如前 100 行),然后再提供获取下一行的可能性。
并非所有问题都可以通过一些配置参数来解决。
答案4
这可能是由于几个问题造成的,PHP 有不同的控制来避免脚本失控(最大内存和最大执行时间)。
与服务器 50x 错误相关的 3 个最常见问题是
- 脚本已超过其最大执行时间:您之所以会看到此信息,是因为回复需要很长时间,避免这种情况的一种方法是覆盖脚本第一行中的最大执行时间(如果您知道它实际上需要的时间会超过默认的最大执行时间)
- 脚本已使用所有可用内存:这个会快很多,可能就是你的那个,如果你的脚本需要它,它也可以被覆盖
- 无限递归循环:这将是相当暴力的,这是最后一种情况,通常是前两种情况之一,所以如果两种解决方案都不起作用,那么这是一种可能的情况
祝你调试顺利!