2014-02-15 84 views
0

我建立這需要執行這個SQL語句塊:致命錯誤「允許用盡134217728個字節的內存大小...」

$sql = 'SELECT c.fullname AS CourseName, from_unixtime(l.time) AS DateandTime, u.username AS Username, 
     l.ip AS IPAddress, u.firstname AS FirstName, u.lastname AS LastName, u.email AS Email, l.module As Activity, 
     l.action As Action, l.url As URL, l.info AS Information, r.roleid AS RoleID, l.userid AS UserID, c.id as CourseID 
     FROM {log} l, {user} u, {role_assignments} r, {course} c 
     WHERE r.userid = l.userid AND c.id = ' . $courseid; 
if($Flag == 0) 
{ 
$sql = $sql . " ORDER BY DateandTime Desc"; 
} 
elseif($Flag == 1) 
{ 
$sql = $sql . " ORDER BY Username Asc"; 
} 

其中「$ courseid」是所選課程ID。執行時,Moodle是返回此錯誤消息:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2048 bytes) in D:\Moodle\lib\weblib.php on line 1277 

我沒有使用這個PHP命令:

現在
ini_set('memory_limit', '-1'); 

修改SQL語句後,我收到此錯誤:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 925 bytes) in D:\Moodle\lib\dml\moodle_database.php on line 842 

而當刷新頁面,我會得到這個錯誤:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 528 bytes) in D:\Moodle\lib\dml\mysqli_native_moodle_database.php on line 1022 

但我知道這不是一個解決方案。

任何人都可以幫助我,我將不勝感激?

在此先感謝。

此致

艾哈邁德

+0

這些都是細小的分配,所以我認爲你真正的問題是在其他地方(什麼是使用所有可用內存的機器上) – Dave

+0

喜戴夫,感謝您的回覆;從這個SQL語句生成的總記錄是21559,正如我在MySQL Workbench上所做的那樣。有什麼建議麼?提前致謝。 –

+1

逐行處理記錄,並且不要在同一時間將它們存儲在內存中。 –

回答

2

的Moodle提供raise_memory_limit($newlimit); 功能在setuplib.php聲明和可只要config.php中包含的方法。

使用此方法是提高Moodle內存限制的首選方法。

如下使用它:

raise_memory_limit([MEMORY_STANDARD|MEMORY_EXTRA|MEMORY_HUGE|MEMORY_UNLIMITED|'128M'|...]);

相關問題