正如标题所示,我在加载我的网站时收到错误Minecraft-Seeds.net它使用AV Arcade script运行,并且在过去的一年中没有任何障碍而且运行正常半即可。最近,该网站一直给我内存错误,我们已经绝对没有更改代码,甚至恢复了以前的网站备份。我们的访问并没有疯狂地解释资源使用量的增加,因为我们本月有一个低月,大约有300,000次访问。
此处的热门建议Allowed memory size of 33554432 bytes exhausted (tried to allocate 43148176 bytes) in php不起作用,因为我的脚本存在一个实际问题,导致它使用的内存比我的内存多得多。
我查看了代码并且不确定我应该从哪里开始查看。 mySQL查询似乎有LIMIT,所以我不确定导致错误的是什么。
如果你现在去网站,它会给你以下地方作为错误的来源:
/home/mineseed/public_html/config.php 在线 39
这行代码如下$new_plays = 4;
我尝试将其评论出来,并导致错误只是在我的网站上跳转到一行代码之后,没有明确的解决方案。
非常感谢任何帮助。
修改 我添加了config.php文件
<?php
// mySQL information
$server = 'localhost'; // MySql server
$username = 'user'; // MySql Username
$password = 'pass'; // MySql Password
$database = 'database'; // MySql Database
// The following should not be edited
$con = mysql_connect("$server","$username","$password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("$database", $con);
//mysql_query("UPDATE ava_games SET height='300' WHERE height='0'") or die (mysql_error());
//
$sql = mysql_query("SELECT * FROM ava_settings");
$row = mysql_fetch_array($sql);
$site_name = $row['site_name'];
$site_description = $row['site_description'];
$site_keywords = $row['site_keywords'];
$site_url = $row['site_url'];
$seo_on = $row['seo_on'];
$template_url = $row['template_url'];
$max_results = $row['max_results'];
$image_height = $row['image_height'];
$image_width = $row['image_width'];
$adsense = $row['adsense'];
$cat_numbers = $row['cat_numbers'];
$email_on = $row['email_on'];
$add_to_site = $row['add_to_site'];
$plays = $row['plays'];
$language = $row['language'];
$featured = $row['featured_games'];
$play_limit = $row['play_limit'];
$adsense_id = $row['adsense_id'];
$new_plays = 4;
// Convert super globals
if (phpversion() >= '5.0.0')
{
$HTTP_POST_VARS = ($_POST);
$HTTP_GET_VARS = ($_GET);
}
?>
答案 0 :(得分:1)
首先,您需要检查您是否在PHP脚本中使用递归,因为某些时间递归失败,这就是发生此错误的原因。
如果您使用太多数组,请在使用后取消设置,以便释放一些内存供其他执行。即:unset($array)
请增加php.ini
的内存限制或使用php函数ini_set('memory_limit','128M');
或使用.htaccess
文件覆盖memory_limit
答案 1 :(得分:0)
尝试取消设置不需要的变量并在第39行之前腾出内存。此外,继续清理后面的代码。虽然不是首选,但您也可以增加php.ini中的内存分配。
只需提取所需的列
,即可使查询高效 Select column1, column2......
确保列具有索引以获得更快的结果。如果您确定需要检索的结果数量,查询还需要使用“限制”。
答案 2 :(得分:0)
对不起我的英语。如果不查看代码,很难分辨出内存泄漏的位置。是的,我同意所有修复(增加php内存,限制查询中的行)。当您使用数组或使用大文件(解析xml)或类似的东西时,内存可能会掉落。尝试找到增加内存的代码部分,使用var_dump(),debug_backtrace(),或尝试使用记录所有变量的库