2012-08-11 109 views
2

我必须在这里阅读所有类似的帖子,但仍然无法弄清楚为什么会发生这种情况。允许的内存大小67108864字节耗尽

我的代码:

$stmt = $this->db->stmt_init(); 
     $stmt->prepare("SELECT Table1.id,Name,type,text,fname,lname FROM Table1, Table2 WHERE Table1.email = Table2.email AND type='text' AND Table1.Id=?"); 
     $stmt->bind_param("i", $id); 
     $stmt->bind_result($legTxtId,$legTxtName, $legTxtType, $legTxtText, $legTxtFname, $legTxtLname); 
     $stmt->execute(); 
     $results = array(); 
     while($stmt->fetch()) 
     { 
      $results[] = array(
        'legTxtId' => $legTxtId , 'legTxtName' => $legTxtName , 'legTxtType' => $legTxtType , 
        'legTxtText' => $legTxtText , 'legTxtFname' => $legTxtFname , 
        'legTxtLname' => $legTxtLname); 
     } 
     $stmt->close(); 
     return $results; 

现在我正在使用一个不同的功能是这一个之前调用完全相同的代码即使它返回一个多领域,它工作正常。

这一个特别是只返回1行只是简单的短文本(没有照片或任何东西),所以它不应该失败,导致其肯定小于64M。

任何人都可以看到什么问题是?

+0

“表1”和“表2”中的记录数是多少? – verisimilitude 2012-08-11 14:18:35

+0

这两个查询应该只返回一行atm..and第一个这是不工作的..即使我删除第一个失败,我知道查询是有效的所以.. – mixkat 2012-08-11 14:20:18

+2

这些字段中的任何一个' MEDIUMTEXT','MEDIUMBLOB'或类似的东西 - 能够存储大量的数据?类似的问题是[最近发布](http://stackoverflow.com/questions/11913818/php-massive-memory-usage-for-sql-query),你可能不得不切换到PDO或启用mysqlnd使其工作。 – DCoder 2012-08-11 14:22:41

回答

1

正如在其他问题讨论,似乎这两个解决方案:

1)切换到mysqlnd连接器,因为这没有按” t显示相同的错误。

如果你使用yum(亚马逊EC2服务器上EG)安装PHP,那么你可以从这个更改您的LAMP堆栈的设置实现,使用:

sudo yum install php-mysql php php-xml php-mcrypt php-mbstring php-cli mysql httpd 

到:

sudo yum install php-mysqlnd php php-xml php-mcrypt php-mbstring php-cli mysql httpd 

2)使用store_result或use_result,它们也不会显示大量的内存分配问题。

切换到mysqlnd可能是一个更好的长期解决方案,它是一般写得比现有的PHP MySQL的连接器(例如结果在MySQL的内存被复制到PHP内存之前不重复),并从默认的连接器从PHP 5.4.0起。

0

那么为什么你使用while循环的一条记录?

+1

它并不总是会成为一个记录..只是在这个阶段我只有一个记录。 – mixkat 2012-08-11 14:19:02

+0

添加第二条记录并尝试运行相同的脚本。就这样我可以在晚上睡觉。 – 2012-08-11 14:20:22

+1

不...没有任何更改.. – mixkat 2012-08-11 14:22:48

0

将数据移动到本地缓冲区将可能帮助:

// ... 
$stmt->prepare(...); 
$stmt->bind_param(...); 

$stmt->execute(); 
$stmt->store_result(); 

$stmt->bind_result(...); 
// ... 
相关问题