【问题标题】:PHP file crashes after 5 sec of execution [closed]PHP文件在执行5秒后崩溃[关闭]
【发布时间】:2013-04-09 18:26:54
【问题描述】:

我有一个 mysql 查询,它从数据库中返回电影列表。 查询如下

$query = "SELECT * FROM `$tableName` WHERE `$columnName` >= '$stDate' and `$columnName` <= '$endDate' and `$columnName` != '0000-00-00' and `$columnName` != '1970-01-01' ORDER BY `$columnName` ASC;";

查询运行良好,因为我使用 phpmyadmin 对其进行了测试

主要问题是它只返回大约 30 条记录。

如果没有。要返回的记录超过 30 条,则 php 文件崩溃并且什么也不返回。

通过我对 google 的研究,我发现 php.ini 中的这些设置需要更改。我进行了以下更改并重新启动了服务器。

max_input_time = 60;       to    max_input_time = 3600;
max_execution_time = 60;   to    max_input_time = 3600;
memory_limit = 64M;        to    memory_limit = 1024M;

但这些改变并不能解决问题。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 鉴于您已经发布了一个有效的查询而没有其他任何内容,我们应该如何帮助您? INI 设置与您的问题无关。它们已经设置为 60 秒,并且您的脚本在 5 秒 后崩溃。提高限制有什么帮助?
  • 除非你在一个性能极差的服务器上,或者处理大型 blob 记录,否则 30 条记录甚至不应该让 php 闪烁。
  • 在你的mysql_query() 我假设你正在使用它,添加这个:mysql_query($query) or die(mysql_error()); 让我们知道这是否打印出来。
  • 你设置了max_executio_time=3600吗?或者您的问题中有错字?
  • 非常感谢 meagar、Marc B、kylex 和 Aris 的宝贵时间。我刚刚发现了问题。并将答案发布如下。我把它作为我的本地设置 ini_set('memory_limit', '1GB');应该是 ini_set('memory_limit', '1G');对不起,我的错。

标签: php mysql apache


【解决方案1】:

不知道更多就很难知道。

看着你的查询让我想到了一些事情:

$query = "SELECT * FROM `$tableName` WHERE `$columnName` >= '$stDate' and `$columnName` <= '$endDate' and `$columnName` != '0000-00-00' and `$columnName` != '1970-01-01' ORDER BY `$columnName` ASC;";

1. 使用 RESERVED KEYWORD NOT(或 IS NOT)代替 !=。

2. 为什么$columnName != '0000-00-00' 和$columnName != '1970-01-01' ???

3.您不应在查询末尾使用分号。 (如果您不在同一批次中添加查询)

请向我们提供整个代码,至少是在哪里执行实际查询以及在其中放入了哪些值...

【讨论】:

  • 我已接受您的回答。但我已经发现了问题。非常感谢您的时间。我很感激。并且肯定会接受您的建议。 1,3 供我进一步练习。
  • 好的,谢谢。但我现在很好奇。出了什么问题?
  • 这是一个非常愚蠢的错字问题。正在使用这个 ini_set('memory_limit', '1GB');而不是这个 ini_set('memory_limit', '1G');
猜你喜欢
  • 2015-03-29
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2015-02-21
相关资源
最近更新 更多