2012-01-11 64 views
1

我有此查詢:出的存儲器(分配50855936)(試圖分配50331646個字節)

$start = 0; 
$number_of_posts = 10; 

$sql = $db -> prepare(" 
      SELECT U.username, U.offer_photo, F.activities, A.id_offer, A.offer, A.role, A.content, A.date_post, A.limit, B.type_offer, C.local 
      FROM type_offer B, local C, offer A 
      INNER JOIN users U 
      ON U.id_user = A.company_users_id_user1 
      INNER JOIN company F 
      ON F.users_id_user = A.company_users_id_user1 
      WHERE state = 0 
      AND 
      A.type_offer_id_type_offer = B.id_type_offer 
      AND 
      A.local_id_local = C.id_local 
      ORDER BY date_post 
      DESC LIMIT ?, ? 
      "); 
     $sql -> bind_param('ii',$start, $number_of_posts); 
     $sql -> execute(); 
     $sql -> bind_result($username, $offer_photo, $actividades, $id_oferta, $oferta, $cargo, $conteudo, $data_post, $data_limite, $tipo_oferta, $local); //problem here 
      $sql->fetch(); 
      $sql-close; 

,我已經在的phpinfo memory_limit: 256M();但是我仍然遇到了內存問題。 我已經嘗試沒有成功驗證碼:

set_time_limit(0); 
ini_set('memory_limit', '2000M'); 

所以我的問題是,查詢可以進行優化,或者我怎麼能增加內存?我沒有訪問php.ini,但我認爲256MB應該足夠了,所以也許問題在於查詢。

+0

這個錯誤不是你在達到'memory_limit'時得到的錯誤。看起來你的PHP解釋器實際上是由於內存問題而崩潰的。 SQL查詢在從常規MySQL客戶端運行時表現是否良好? – 2012-01-11 16:42:37

+0

是的,查詢在phpMyAdmin中運行良好。最奇怪的是我有一個本地服務器的內存限制128MB,我沒有任何問題。 – user947462 2012-01-11 16:49:16

回答

1

u.offer_photo是blob字段嗎?如果是這樣,我會建議重寫邏輯,以便在實際顯示它之前不要獲取blob數據。

即使您可以通過增加分配來解決內存限制,但使用過多的內存和易碎性都會造成反社會,因爲未來數據庫大小的增加可能會破壞系統。

+0

u.offer_photo只是路徑(varchar(75)),如:thumb/miniaturas/oferta/default_offer.jpg – user947462 2012-01-11 17:01:34

相關問題