了解Moodle版本控制方案將有助于您使用我們的存儲庫【repositories】獲取代碼(例如升級)。在tracker.moodle.org中報告錯誤時,了解正確的版本也非常有用。
Moodle版本號由三個以點分隔的數(shù)字組成,例如1.9.11或2.0.2。前兩個數(shù)字,如1.9或2.0,代表主要版本【major version】。第三個數(shù)字區(qū)分了同一個主要版本中的次要版本【minor version】。發(fā)布新的主要版本時,次要版本設(shè)置為0。例如,Moodle 2.0.1是Moodle 2.0.0的第一次小更新。
通常,Moodle HQ團隊維護Moodle的兩個最新主要版本(該規(guī)則的一個顯著例外是Moodle 1.9,它的支持時間更長)。
Moodle開發(fā)人員使用源代碼管理(SCM)系統(tǒng)“Git”來跟蹤代碼中的更改。與許多SCM一樣,Git中代碼的變化歷史通過所謂的分支來表示??梢詫⒎种б暈樵创a更改的標(biāo)記序列。
Moodle的每個主要版本都有一個分支。所有Moodle 1.9版本都來自Moodle_19_STABLE分支,所有Moodle 2.0版本都來自Moodle_20_STABLE分支。還有一個名為master的主要開發(fā)分支,負責(zé)保存下一個未來版本的更改。
自2.0版以來,Moodle計劃每六個月左右發(fā)布一次新的主要版本。
次要版本每兩個月發(fā)布一次,包括修復(fù)的bug和安全問題。
在兩次發(fā)布之間,Moodle HQ團隊發(fā)布最新穩(wěn)定版本的修訂。這些修訂每周發(fā)布,通常在周四發(fā)布。稱為每周構(gòu)建。通過版本號中的小增量和類似20200723這樣的構(gòu)建日期(發(fā)布每周構(gòu)建的日期,格式為YYYYMMDD)來識別。這些每周構(gòu)建的版本號有一個加號后綴,例如,3.9.1+ 表示基于次要發(fā)布版3.9.1的每周構(gòu)建。
在其生命周期中,Moodle代碼分支經(jīng)歷了幾個成熟度級別。
一開始,分支被認為處于alpha狀態(tài)。在此期間,新功能將添加到分支。API和數(shù)據(jù)庫結(jié)構(gòu)可能會根據(jù)需要更改。這些版本主要面向開發(fā)人員,因為沒有任何保證(例如,該版本可能不能安裝或不能執(zhí)行升級)。
當(dāng)決定不向分支添加新功能(即所謂的功能凍結(jié))時,就達到了beta成熟度級別。開發(fā)人員專注于測試、修復(fù)bug和穩(wěn)定分支。
在一段時間的測試中,當(dāng)所有已知的關(guān)鍵和妨礙程序正常運行的bug都已修復(fù),并且沒有新的錯誤報告時,可以發(fā)布分支的preview版本,或稱為“發(fā)布候選版本【release candidate】”。發(fā)布第一個候選版本(RC1)后,將達到候選版本成熟度級別。在此期間,可以發(fā)布多個RC版本,例如2.1RC1、2.1RC2、2.1RC3等。
最后,新的主要版本發(fā)布,分支達到穩(wěn)定的成熟度水平。從現(xiàn)在起,這個分支的數(shù)據(jù)庫結(jié)構(gòu)和API不會改變。將創(chuàng)建相應(yīng)的MOODLE_xx_STABLE,并根據(jù)它創(chuàng)建次要版本和每周構(gòu)建。
每個插件的versions.php文件可以指定插件工作所需的Moodle的最低版本。
$plugin->version = 2011080200;
$plugin->requires = 2011070101;
在Moodle內(nèi)核【core】中,當(dāng)我們從主干【master】分支時,我們也會分支版本號。這意味著穩(wěn)定分支中的任何版本號都不應(yīng)高于主干【master】分支(或更高版本穩(wěn)定分支)上的版本號。
版本號結(jié)構(gòu)為YYYYMMDDRR.XX。
YYYYMMDD是創(chuàng)建分支的日期。如果在主干【master】上,沒有發(fā)生分支,則應(yīng)將其設(shè)置為當(dāng)前日期。否則(在非主干分支中)不應(yīng)更改(保持原樣,即創(chuàng)建分支時的日期)。
RR是發(fā)布遞增版本號。這是在一個分支上的代碼變化的增量計數(shù)器、或者在主干【master】的日期計數(shù)器。
XX是微增版本號。當(dāng)我們意識到在一個穩(wěn)定的分支上(在RR增量中)可能有超過99個升級步驟時,我們引入了“分數(shù)增量”。它往往只在主版本號文件中使用。
如果存在“微增量”(.XX)。開發(fā)人員只應(yīng)增加“微增量” ‘XX’
集成團隊保留使用“RR”在發(fā)布點之間進行分支的權(quán)利。
如果“微增量”(.XX)不存在,請增加RR。
必須在當(dāng)前日期的基礎(chǔ)上遞增全部版本號。
因此,2013年2月6日,版本號設(shè)置為:2013020600.00
想象一下以下場景:
1)Moodle 2.4發(fā)布,mod_forum版本2012120300。
2)僅在master中,王二的更新會在升級步驟【upgrade step】中刪除一個數(shù)據(jù)庫字段,并將moodle版本設(shè)置為201301010
3)在2.4.1和master中,張三修復(fù)了權(quán)限定義中的一個問題,并將兩個分支中的版本設(shè)置為2013010200。(注意:這里將導(dǎo)致錯誤,我們錯誤地更改了整個未來2.4.x版本的分支日期!)
4)Moodle 2.5發(fā)布,mod_forum版本2013060100
5)Moodle 2.5發(fā)布后,李四將她的Moodle從Moodle 2.4.1更新為2.5。
由于張三在第3)步中的把2.4.x版本改為2013010200,這導(dǎo)致著第2)步中王二的的升級步驟將永遠無法運行。
不是核心插件,抱歉,不能設(shè)置為相同。有太多的開發(fā)人員在使用同一個代碼,如果我們避免為core這樣做的話,它可以防止事故的發(fā)生。
]]>當(dāng)你創(chuàng)建一個普通的moodle頁面并包含config.php時,默認情況下,在php運行大量moodle引導(dǎo)代碼后,將擁設(shè)置好一個名為$SESSION全局變量。這是一個安全的啟動假設(shè),但在編寫更高性能的代碼時,最好盡可能減少或消除會話鎖。
如果你發(fā)現(xiàn)訪問某個頁面時特別慢,在對做了分析之后,發(fā)現(xiàn)正在等待一個鎖釋放,那么這可能是一件很容易修復(fù)的事情,可以提高你的整體性能。
$CFG->debugsessionlock=5;//以秒為單位的時間
當(dāng)一個會話被鎖定N秒以上時,將進行一次調(diào)試調(diào)用,詳細說明哪個頁面在正在鎖定。
默認情況下,moodle內(nèi)核【core】假設(shè)您可能需要修改$SESSION對象,所以它將在會話上保持鎖,直到頁面處理完成時由shutdown handle釋放會話鎖。如果您正在處理可能長時間運行的頁面,那么您應(yīng)該對代碼做清晰的分離,把需要修改會話的代碼和需要長時間運行的代碼分離開來,并在修改會話后解鎖會話。
\core\session\manager::write_close();
要使只讀會話起作用,必須啟用只讀會話,并且需要您的代碼來支持它。
如果你提前知道你永遠不會改變會話,但你仍然需要能夠讀會話,那么你可以將你的頁面聲明為只讀會話。這意味著您的頁面永遠不會在另一個http請求中阻止會話。
define('READ_ONLY_SESSION', true);
在web服務(wù)中也是如此。聲明web服務(wù)時,可以指定它不需要會話鎖:
如果您的代碼完全不需要訪問$SESSION,那么可以聲明:
define('NO_MOODLE_COOKIES', true);
更極端的一種情況,如果您甚至不需要運行完整的moodle引導(dǎo)代碼,那么您可以通過以下方式跳過它:
define('ABORT_AFTER_CONFIG', true);
]]>1 我的課程:從網(wǎng)站頂部的“我的課程”選項卡可以方便訪問“我的課程”。沒有可用課程的時候,可以方便的在我的課程頁面創(chuàng)建一門新課程??梢园盐业恼n程頁設(shè)置為缺省主頁。
2 儀表板【Dashboard】和時間線【Timeline】:通過儀表板頁面上的時間線版塊經(jīng)過改進,在截止日期前保留目標(biāo)事件。
3 課程目錄索引【Course Index】:在課程頁面的左側(cè)可以顯示課程的目錄索引(教學(xué)資源和教學(xué)活動)。
4 活動完成【Activity Completion】跟蹤:課程目錄索引中顯示各條目的完成狀態(tài)。
1 編輯模式:切換編輯模式,并訪問新的版塊【block】抽屜【drawer】以添加或查看版塊。
2 輕松添加內(nèi)容:只需一次單擊即可添加活動【Activities】和資源【Resources】。
3 上下文導(dǎo)航【Contextual navigation】:課程和活動的選項卡【Tab】菜單。
4 拖放操作移動內(nèi)容:在課程索引區(qū)和中央內(nèi)容區(qū)可以拖放操作移動內(nèi)容。
1 題庫插件:顯示或隱藏注釋和用法。
2 改進題目管理:另存為草稿或正式提交;與同事一起工作時,查看版本歷史記錄并使用自定義字段。
1 Atto編輯器:提升可訪問性【accessibility】。
2 及格才能完成:完成條件可以設(shè)置為成績及格。
3 新的活動圖標(biāo)。
4 內(nèi)容更新:當(dāng)課程內(nèi)容有新增或修改時,通知學(xué)員。
5 作業(yè)的時間:指定作業(yè)時間,鼓勵學(xué)員在指定時間內(nèi)提交作業(yè)。
6 Big Blue Button:使用Big Blue Button的免費試用版上直播課。
1 網(wǎng)站管理預(yù)設(shè)【presets】:輕松為用戶提供高效率的、全套功能的預(yù)設(shè)配置。
2 報表構(gòu)建:建立自定義報表并向指定的用戶【users】、角色【roles】、群組【cohorts】分享。
3 用戶導(dǎo)覽【User Tours】:可以包括圖片。
4 登錄頁面:可以設(shè)置背景圖片。
5 支持LTI 1.3 Advantage。
6 強制性的站點支持郵箱。
1 Moodle 3.6及以上版本
2 PHP 7.3.0及以上版本
3 推薦PHP擴展sodium
4 推薦PHP擴展exif
5 推薦PHP設(shè)置max_input_vars 設(shè)置為>= 5000
6 數(shù)據(jù)庫最低版本要求
PostgreSQL 10
MySQL 5.7
MariaDB 10.2.29
Microsoft SQL Server 2017
Oracle Database 11.2
7 瀏覽器支持:Chrome、Firefox、Safari、Edge
Moodle 4.0及以上版本不再支持Internet Explorer 11。
Safari 7及以下版本與Moodle 4.0及以上版本存在已知的兼容性問題。
8 移動端瀏覽器支持:MobileSafari、Google Chrome
]]>(一)學(xué)生活動完成跟蹤【student activity completion】
1 改善學(xué)習(xí)體驗:活動日期和活動完成條件可顯示在課程頁面上。
2 活動日期和完成條件:活動日期和活動完成條件顯示在活動頁面的頂部。
3 手工標(biāo)記為完成:學(xué)生可以在活動頁面將活動標(biāo)記為完成。
4 新的顯示設(shè)置:新的顯示設(shè)置允許教師在課程頁面上隱藏或顯示活動日期和完成條件。
(二)可訪問性工具包【Accessibility toolkit】
1 免費的入門工具包:可訪問性工具包(來自Brickfield教育實驗室)鑒定課程中的可訪問性問題。
2 課程可訪問性評估:對課程內(nèi)容進行分析,以便教師能夠識別和修復(fù)可訪問性錯誤。
3 錯誤熱圖【Heatmap】:熱圖提供了關(guān)注區(qū)域的彩色上下文視圖。
4 一系列報表和圖表:錯誤可以以圖形形式查看,也可以作為帶有可下載報表的列表查看。
(三)H5P和內(nèi)容庫【content bank】
1 禁用選定的H5P內(nèi)容類型:管理員可以從管理員設(shè)置中禁用選定的H5P內(nèi)容類型。
2 將內(nèi)容標(biāo)記為不列示:教師可以通過將內(nèi)容庫標(biāo)記為不列示來隱藏內(nèi)容。
3 查看鏈接的內(nèi)容:內(nèi)容庫中新增一列顯示項目鏈接的次數(shù)。
4 刪除鏈接內(nèi)容時發(fā)出警報:當(dāng)鏈接內(nèi)容即將被刪除時,將顯示一條警報。
(四)測驗【quiz】與題型【question types】
1 查看分數(shù)修改和及格分數(shù):教師可以查看分數(shù)修改,學(xué)生可以直接在測驗頁面上查看及格分數(shù)。
2 保留首選試題設(shè)置:教師下次創(chuàng)建試題時,將保留對題型默認設(shè)置的更改。
3 論述題字數(shù)限制:論述題可以指定最小和最大字數(shù)限制。
4 反抄襲支持:如果安裝了抄襲檢查器,可用于論述題。
(五)徽章
1 更好的背包【backpack】管理:管理員可以為用戶設(shè)置背包【backpack】的排列順序。
2 兼容 Open Badges v 2.1:Moodle 3.11兼容Open Badges v 2.1,新的OAuth 2 Open Badges服務(wù)允許用戶連接到符合OB v 2.1標(biāo)準(zhǔn)的背包【backpack】,而無需在Moodle中輸入憑據(jù)。
(六)用戶檔案【User profile】字段
1 新的社交賬號字段【Social profile field】:新的社交賬號字段將替換用戶檔案中的硬編碼字段。
2 可在“顯示用戶身份”中選擇的自定義用戶檔案字段:可以在用戶策略>顯示用戶身份中選擇自定義用戶檔案字段,以便它們顯示在參與者列表中。
(七)其它新特性
1 控制音頻/視頻播放速率:學(xué)生可以控制音頻和視頻文件的播放速度。
2 改進的活動完成報表:活動完成報表可以按活動和活動順序進行篩選。
3 搜索語言包:安裝新語言包時,可以搜索語言列表。
4 新的PDF轉(zhuǎn)PNG轉(zhuǎn)換器:對于作業(yè)注釋,可以采用一個新的轉(zhuǎn)換器Poppler來代替Ghostscript。 5 課程單元鏈接版塊【Section links block】:標(biāo)題現(xiàn)在可以顯示在課程單元鏈接版塊中。
1 Moodle 3.6及以上版本
2 PHP 7.3.0及以上版本
3 推薦PHP擴展sodium
4 推薦PHP設(shè)置max_input_vars 設(shè)置為>= 5000
5 數(shù)據(jù)庫最低版本要求
PostgreSQL 9.6
MySQL 5.7
MariaDB 10.2.29
Microsoft SQL Server 2017
Oracle Database 11.2
5 瀏覽器支持:Chrome、Firefox、Safari、Edge
Moodle 3.10及以上版本不再支持Internet Explorer 11。
Safari 7及以下版本與Moodle 3.10及以上版本存在已知的兼容性問題。
6 移動端瀏覽器支持:MobileSafari、Google Chrome
]]>為了幫助您創(chuàng)建符合這些規(guī)范的數(shù)據(jù)表,建議您使用內(nèi)置的數(shù)據(jù)庫定義(XMLDB)編輯器。
1 每個表都必須有一個自動遞增的id字段(INT10)作為主鍵。
2 包含每個模塊【module】實例【instances】的主表必須與模塊(例如小部件【widget】)具有相同的名稱,并且至少包含以下字段:
id -如上所述
course -模塊實例所屬課程的id
name -模塊實例的全名
3與包含“things”信息的模塊相關(guān)聯(lián)的其他表應(yīng)命名為widget_things(注意復(fù)數(shù)形式)。
4一般來說,核心表的表名應(yīng)該使用一個非復(fù)數(shù)單詞,而兩個單詞的表名只能是最后一個單詞采用復(fù)數(shù),例如course、course_categories。只有保留字【reserved words】例外,例如files。(由于歷史原因,目前有些表名不遵守這種規(guī)范,但這種情況后續(xù)會改變)
5 表名和列名應(yīng)避免在任何數(shù)據(jù)庫中使用的保留字【reserved words】。請在創(chuàng)建之前檢查它們。表名最多可包含28個字符,列名最多可包含30個字符。
6 列名應(yīng)該始終是小寫、簡單和簡短的,遵循與變量名相同的規(guī)則。
7 在可能的情況下,包含對另一個表(例如小部件【widget】)的id字段的引用的列應(yīng)該稱為widgetid。(請注意,此約定是新的,在一些舊表中沒有遵循)
8布爾字段應(yīng)實現(xiàn)為包含0或1的小整數(shù)字段(例如INT4),以便以后在必要時擴展值。
9大多數(shù)表都應(yīng)該有一個timemodified字段(INT10),該字段用PHP的time() 函數(shù)獲得的當(dāng)前時間戳更新字段值。
10始終為每個字段定義一個默認值(并使其合理)
11每個表名都應(yīng)該以數(shù)據(jù)庫前綴($CFG->prefix)開頭。在很多情況下,這會自動為您解決。此外,在Postgres下,每個索引的名稱也必須以前綴開頭。
12為了保證跨數(shù)據(jù)庫的兼容性,請遵循以下關(guān)于AS關(guān)鍵字使用的簡單規(guī)則(當(dāng)然,只有在需要在sql語句中為表、字段指定別名的時候):
13絕對不要創(chuàng)建唯一鍵【UNIQUE KEYs】約束。而是使用唯一索引【UNIQUE INDEXes.】。將來,如果官方?jīng)Q定向Moodle添加引用完整性,需要的話會使用唯一鍵【UNIQUE KEYs】,但現(xiàn)在不會。請注意,XMLDB編輯器允許您同時指定XMLDB-only UNIQUE和FOREIGN約束(有利于更好地定義XML),但只會在底層生成索引。
14僅當(dāng)字段將成為某些(XMLDB-only)外鍵的引用目標(biāo)的時候,才為這些字段定義XMLDB-only UNIQUE KEYs,否則,定義為簡單的唯一索引【UNIQUE INDEXes】。
15與版塊【block】相關(guān)聯(lián)的表的名稱必須遵循如下約定:$CFG->prefix + “block_” + name_of_the_block + 其他內(nèi)容。例如,假設(shè)$CFG->prefix是’mdl_’,塊“rss_client”的所有表都必須以’mdl_block_rss_client’開頭(可以在末尾添加更多單詞,例如’mdl_block_rss_client_anothertable’ 等等)。
16不要在穩(wěn)定的分支中更改數(shù)據(jù)庫。如果這樣做,那么當(dāng)用戶從一個穩(wěn)定版本升級到下一個穩(wěn)定版本時,將發(fā)生重復(fù)更改數(shù)據(jù)庫,這可能會導(dǎo)致嚴(yán)重錯誤。
17在SQL查詢中引用整型變量時,不要將值括在引號中。例如,下面的語句是正確的
get_records_select( 'question', 'category=$catid' )
下面的語句是錯誤的:
get_records_select('question', “category='$catid’” )
它隱藏未定義$catid的bug。(如果加了引號,當(dāng)$catid沒有值時,sql語句也不會報錯)
18在SQL查詢語句中,不要對變量的值使用雙引號(例如SELECT*FROM{user}WHERE username=“someuser” )。雖然在MySQL中,這樣的SQL語句沒有問題,但這不符合ANSI數(shù)據(jù)庫標(biāo)準(zhǔn),比如Postgresql就會將雙引號的變量值視為系統(tǒng)標(biāo)識符(例如字段名)。
19 Moodle不支持數(shù)據(jù)庫“視圖”【view】,不要使用視圖。如果數(shù)據(jù)庫存在視圖、不符合規(guī)范的表,在數(shù)據(jù)庫轉(zhuǎn)換、遷移、備份、恢復(fù)、升級等操作中,可能會出現(xiàn)錯誤。
]]>學(xué)習(xí)分析是一種算法,用于根據(jù)歷史數(shù)據(jù)和當(dāng)前行為預(yù)測或檢測學(xué)習(xí)過程的未知信息。學(xué)習(xí)分析功能具有四性:
大多數(shù)商業(yè)解決方案只是描述性的。那些具有預(yù)測性或前瞻性的方案對學(xué)習(xí)做出了某些假設(shè),但這些假設(shè)并不適用于所有人。
Moodle(魔燈)提供了基于日志數(shù)據(jù)的各種內(nèi)置報表,但它們基本上是描述性的——它們告訴參與者發(fā)生了什么,但不告訴他們?yōu)槭裁?,它們不預(yù)測結(jié)果或建議參與者如何改善結(jié)果。日志條目雖然非常詳細,但其本身并不能描述學(xué)習(xí)過程。他們告訴我們“誰”、“什么”和“何時”,但不告訴我們“為什么”或“情況如何”。為了形成一種參與模式,每個微觀行動都需要更多的背景。
Moodle也有許多提供描述性分析的第三方插件。還有與第三方離站【off-site】報告解決方案的集成。同樣,它們主要提供描述性分析,依靠人類的判斷來解釋報告并生成預(yù)測和對策【prescriptions】。
過去,學(xué)習(xí)分析系統(tǒng)通常試圖分析過去的活動,以實時預(yù)測未來的活動。通過Moodle Learning Analytics,我們更加雄心勃勃。我們相信,一個完整的學(xué)習(xí)分析解決方案不僅能幫助我們預(yù)測事件,還能讓幫助我們正向提升。
1 支持兩種類型的模型:
? 基于機器學(xué)習(xí)【Machine-learning】的模型,包括預(yù)測模型【predictive models】
? 使用簡單規(guī)則檢測關(guān)注情況的“靜態(tài)”模型【”Static” models to detect situations of concern using simple rules】
2 三種內(nèi)置模型:
? 有輟學(xué)風(fēng)險的學(xué)生【Students at risk of dropping out】
? 即將舉行的活動到期【Upcoming activities due】
? 沒有教學(xué)行為【No Teaching】
3 一套基于探究性團體【Community of Inquiry】的學(xué)生參與度指標(biāo)【engagement indicators】。
4 內(nèi)置工具,用于根據(jù)站點數(shù)據(jù)評估模型
5 使用事件【events】進行主動通知【Proactive notifications】
6 建議的行動【Actions】列表隨每個模型的洞察通知【Insight notifications】一起提供。例如,在“有輟學(xué)風(fēng)險的學(xué)生”模型中,教師可以輕松地向該模型識別的學(xué)生發(fā)送消息,或者跳轉(zhuǎn)到該學(xué)生的活動報表【Activity report】,以獲取有關(guān)課程中學(xué)生活動的更多詳細信息。
7 提供API,為第三方Moodle插件構(gòu)建指標(biāo)和預(yù)測模型
8 機器學(xué)習(xí)后端插件類型 – 支持PHP和Python,可以擴展以實現(xiàn)其他機器學(xué)習(xí)后端
9 基于可重用的目標(biāo)【targets】、指標(biāo)【indicators】和其他組件【components】,該系統(tǒng)可以輕松地通過新的定制模型進行擴展。
1 機器學(xué)習(xí)模型,比如有輟學(xué)風(fēng)險的學(xué)生,必須在有數(shù)據(jù)的網(wǎng)站上接受訓(xùn)練。這些模型無法在訓(xùn)練完成之前在一個站點上進行預(yù)測。
2 模型的設(shè)計和選擇必須與學(xué)校的教學(xué)目標(biāo)優(yōu)先級相匹配。
Moodle的學(xué)習(xí)分析系統(tǒng)在使用前需要進行一些初始配置。
Moodle Learning Analytics API是一個開放系統(tǒng),可以成為各種模型的基礎(chǔ)。模型可以包含指標(biāo)【indicators】(也稱為預(yù)測器【predictors】)、目標(biāo)【targets】(我們試圖預(yù)測的結(jié)果)、洞察【insights】(預(yù)測本身)、通知【notifications】(洞察結(jié)果發(fā)送的消息)和行動【actions】(提供給消息接收者,這些可以反過來成為指標(biāo))。
默認情況下,大多數(shù)學(xué)習(xí)分析模型都未啟用。應(yīng)在考慮模型所要支持的目標(biāo)后,根據(jù)目標(biāo)需要啟用相關(guān)模型。
一旦模型被啟用和訓(xùn)練,就會產(chǎn)生洞察【insights】。還應(yīng)監(jiān)控模型的性能和準(zhǔn)確性。
]]>性能【performance】是指允許Moodle(魔燈)使用一定數(shù)量的硬件支持盡可能多的用戶。
當(dāng)然,你總是可以購買更大的服務(wù)器。可伸縮性【scalability】意味著,如果你購買的服務(wù)器的功能是原來的兩倍,那么它可以處理兩倍的負載。
與數(shù)據(jù)庫查詢一樣,還有其他操作比只執(zhí)行PHP代碼慢得多。例如:
無論何時做這些事情,都要注意性能問題。
如果您不需要會話鎖,或者只需要在頁面的一部分使用它,請解鎖會話。
// Capture performance profiling data
define('MDL_PERF', true);
// Capture additional data from DB
define('MDL_PERFDB', true);
// Print to log (error_log(),for passive profiling of production servers)
define('MDL_PERFTOLOG', true);
// Print to footer (works with the default theme)
define('MDL_PERFTOFOOT', true);
小技巧:如果希望只對站點管理員顯示性能信息,可以在適當(dāng)?shù)奈恢茫ū热绮季猪撁娴捻敳浚?,加入如下代碼:
if (is_siteadmin()) {
$CFG->perfdebug = 8;
}
如果你使用postgres,有一個腳本可以解析日志并輸出最慢的10個數(shù)據(jù)庫查詢,隨時可以插入cronjob并每天給你發(fā)電子郵件。腳本可以在這里找到:
http://git.catalyst.net.nz/gw?p=pgtools.git;a=blob_plain;f=scripts/pg-log-process.pl;hb=refs/heads/pg-log-process-multidb
需要對postgres進行一些配置,使其以正確的格式記錄內(nèi)容。
MySQL數(shù)據(jù)庫有?個配置選項可以幫助我們及時捕獲慢SQL語句:
# 開啟日志記錄慢查詢
slow_query_log = ON
# 閾值,記錄執(zhí)行時間超過2秒的慢查詢
long_query_time = 2
# 指定日志文件
slow_query_log_file = path/to/log/file/slowquery.log
# 記錄不使用索引查詢,即使查詢效率不慢
log_queries_not_using_indexes = ON
# 記錄數(shù)據(jù)庫管理SQL中慢sql
log-slow-admin-statements = ON
從統(tǒng)計數(shù)據(jù)來看,目前世界上最大的Moodle(魔燈)站點
在規(guī)劃和測試代碼時,這些是您應(yīng)該考慮的數(shù)字。然而,不要認為Moodle(魔燈)網(wǎng)站永遠不會比這更大。
即使不能在開發(fā)服務(wù)器上測試這么大的站點,也應(yīng)該使用生成器腳本,這樣就可以在一個不小的Moodle(魔燈)站點上測試代碼。
1 下載課程內(nèi)容:點擊“下載課程內(nèi)容”按鈕可以下載課程內(nèi)容(如果被允許的話)。
2 選擇你的徽章背包【backpack】:發(fā)生徽章【badge】到你選擇的徽章背包。
3 測試時的滾動計時器:使用新的測驗滾動計時器,輕松查看剩余時間。
4 文件夾【folder】顯示:文件夾資源【folder resourse】中的圖像和HTML文件可以直接在瀏覽器中查看,而無需下載。
1 內(nèi)容庫【content bank】改進:可以下載和(或)替換內(nèi)容庫中的H5P文件。
2 下載課程內(nèi)容:可以設(shè)置是否允許學(xué)生下載課程內(nèi)容。
3 付費課程:提供付費課程功能,支持多種付費方式。
4 測驗完成:可以基于試答的次數(shù)設(shè)置完成條件。
1 下載課程內(nèi)容:可以設(shè)置是否啟用允許學(xué)生下載課程內(nèi)容的功能。
2 定制H5P風(fēng)格:在主題中定制H5P風(fēng)格。
3 支付網(wǎng)關(guān):設(shè)置由于付費課程的支付網(wǎng)關(guān)。
4 語言定制:導(dǎo)入、導(dǎo)出定制的語言字符串。
5 更好的任務(wù)管理:新的“任務(wù)運行”屏幕顯示當(dāng)前正在執(zhí)行的任務(wù)。
6 LTI改進:LTI改進包括動態(tài)注冊和內(nèi)容的多項選擇。
1 Moodle 3.5及以上版本
2 PHP 7.2.0及以上版本
3 需要PHP擴展mbstring
4 數(shù)據(jù)庫最低版本要求
PostgreSQL 9.6
MySQL 5.7
MariaDB 10.2.29
Microsoft SQL Server 2012
Oracle Database 11.2
5 瀏覽器支持:Chrome、Firefox、Safari、Edge
Moodle 3.10不再支持Internet Explorer 11。
Safari 7及以下版本與Moodle 3.10存在已知的兼容性問題。
6 移動端瀏覽器支持:MobileSafari、Google Chrome
]]>1 集成H5P。
2 課程參與人【Participants】篩選【filter】:有助于更有效的搜索和篩選課程參與人。
3 圖書【Book】導(dǎo)航:對圖書內(nèi)容提供更清晰的導(dǎo)航,避免以前版本的混亂。
4 可訪問性【Accessibility】:改進Atto編輯器。
5可一鍵快速移動到屏幕頂部。
6 可批量刪除私人文件。
1 H5P內(nèi)容庫:在一個新的內(nèi)容庫保存、上傳、創(chuàng)建和配置H5P。
2 H5P報表:啟用對成績、學(xué)習(xí)實踐過程【attempt】的跟蹤。
3 活動選擇器:在改進的“活動選擇器”中輕松定位、查看標(biāo)星項目、查看推薦項目。
4 安全考試瀏覽器:正式集成安全考試瀏覽器【Safe Exam Browser】,可在quiz中配置SEB以滿足考試要求。
5 課程頁面,提供一個“打開編輯功能”按鈕。
6 活動完成:移動活動時,無需擔(dān)心會丟失基于“上一個”設(shè)置一個新的完成條件的活動完成設(shè)置。
7 從新的網(wǎng)站moodle.net搜索和導(dǎo)入內(nèi)容。
1 H5P設(shè)置:集成H5P功能的設(shè)置。
2 安全考試瀏覽器設(shè)置:正式集成安全考試瀏覽器【Safe Exam Browser】
3 推薦活動設(shè)置。
4 活動選擇器【Activities Chooser】:設(shè)置在活動選擇器彈框中顯示哪些選項卡【Tabs】。
5 許可證:從新的管理設(shè)置中添加新許可證。
6 用戶導(dǎo)覽:在啟用用戶導(dǎo)覽時指定訪問日期。
7 課程復(fù)制:利用新MUA-funded功能快速復(fù)制課程。
8 集成新的moodle.net。
9 徽章:集成新的背包支持Open Badge 2.1。
10 讓你的用戶通過你網(wǎng)站上的反饋鏈接幫助我們改進Moodle。
1 Moodle 3.5及以上版本
2 PHP 7.2.0及以上版本
3 需要PHP擴展mbstring
4 數(shù)據(jù)庫最低版本要求
PostgreSQL 9.5
MySQL 5.6
MariaDB 10.2.29
Microsoft SQL Server 2012
Oracle Database 11.2
5 瀏覽器支持:Chrome、Firefox、Safari、Edge、Internet Explorer
Moodle 3.9.x(LTS)將是最后一個支持Internet Explorer 11的版本。Moodle 3.10將不支持Internet Explorer 11。
Safari 7及以下版本、Internet explorer 10及以下版本與Moodle 3.9存在已知的兼容性問題。
6 移動端瀏覽器支持:MobileSafari、Google Chrome
]]>