程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> (二)OJ的主要文件,oj文件

(二)OJ的主要文件,oj文件

編輯:關於PHP編程

(二)OJ的主要文件,oj文件


OJ搭建好了後,我們要熟悉一下OJ項目下的文件及文件夾。

首先,安裝好的OJ是在目錄var/www/html下。

html下的php文件

  這些php文件都是些主要跳轉頁面。

admin文件夾

  登錄管理員賬號後管理的管理界面

bootstrap文件夾

  css樣式和圖片,如果要修改某些頁面的小地方請到www\html\bootstrap\css\bootstrap裡面去找到對應的css修改即可。如果要大方面的修改,建議還是自己寫個css文件要好。

include文件夾

  公共的配置文件所在文件夾(學過php的應該都會知道的吧- -);

  這裡主要是有一個web使用的配置文件db_info.inc.php

  主要內容如下:

static $DB_HOST="localhost"; 數據庫的服務器地址
static $DB_NAME="jol"; 數據庫名
static $DB_USER="root"; 數據庫用戶名
static $DB_PASS="root"; 數據庫密碼
// connect db 
static $OJ_NAME="HUSTOJ"; OJ的名字,將取代頁面標題等位置HUSTOJ字樣。
static $OJ_HOME="./"; OJ的首頁地址
static $OJ_ADMIN="root@localhost"; 管理員email
static $OJ_DATA="/home/judge/data"; 測試數據所在目錄,實際位置。
static $OJ_BBS="discuss";//"bbs" 論壇的形式,discuss為自帶的簡單論壇,bbs為外掛論壇,參考bbs.php代碼。
static $OJ_ONLINE=false; 是否使用在線監控,需要消耗一定的內存和計算,因此如果並發大建議關閉
static $OJ_LANG="cn"; 默認的語言,中文為cn
static $OJ_SIM=true; 是否顯示相似度檢測的結果。
static $OJ_DICT=false; 是否啟用在線英字典
static $OJ_LANGMASK=1008; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language 用掩碼表示的OJ接受的提交語言,可以被比賽設定覆蓋。
static $OJ_EDITE_AREA=true;// 是否啟用高亮語法顯示的提交界面,可以在線編程,無須IDE。
static $OJ_AUTO_SHARE=false;//true: 自動分享代碼,啟用的話,做出一道題就可以在該題的Status中看其他人的答案。
static $OJ_CSS="hoj.css"; 默認的css,可以選擇dark.css和gcode.css,具有有限的界面制定效果。
static $OJ_SAE=false; //是否是在新浪的雲平台運行web部分
static $OJ_VCODE=true; 是否啟用圖形登錄、注冊驗證碼。
static $OJ_APPENDCODE=false; 是否啟用自動添加代碼,啟用的話,提交時會參考$OJ_DATA對應目錄裡是否有append.c一類的文件,有的話會把其中代碼附加到對應語言的答案之後,巧妙使用可以指定main函數而要求學生編寫main部分調用的函數。
static $OJ_MEMCACHE=false;是否使用memcache作為頁面緩存,如果不啟用則用/cache目錄
static $OJ_MEMSERVER="127.0.0.1"; memcached的服務器地址
static $OJ_MEMPORT=11211; memcached的端口
static $OJ_RANK_LOCK_PERCENT=0; //比賽封榜時間的比率,如5小時比賽設為0.2則最後1小時封榜。
static $OJ_SHOW_DIFF=false; //顯示WrongAnswer時的對比
復制代碼

 lang文件夾

  語言設置文件夾

template文件夾

  OJ主題文件夾,裡面的一個文件夾對應的一個不同的風格主題。默認使用的是bs主題。

這裡另外要提一下的就是hustoj還有一個core的配置文件judge.conf,默認位置/home/judge/etc

注意core沒有識別引號和注釋的能力,所以不要自行增加任何引號或注釋,否則可能影響judged啟動

OJ_HOST_NAME=127.0.0.1 如果用mysql連接讀取數據庫,數據庫的主機地址
OJ_USER_NAME=root 數據庫帳號
OJ_PASSWORD=root 數據庫密碼
OJ_DB_NAME=jol 數據庫名稱
OJ_PORT_NUMBER=3306 數據庫端口
OJ_RUNNING=4 judged會啟動judge_client判題,這裡規定最多同時運行幾個judge_client
OJ_SLEEP_TIME=5 judged通過輪詢數據庫發現新任務,輪詢間隔的休息時間,單位秒
OJ_TOTAL=1 老式並發處理中總的judged數量
OJ_MOD=0 老式並發處理中,本judged負責處理solution_id按照TOTAL取模後余數為幾的任務。
OJ_JAVA_TIME_BONUS=2 Java等虛擬機語言獲得的額外運行時間。
OJ_JAVA_MEMORY_BONUS=512 Java等虛擬機語言獲得的額外內存。
OJ_SIM_ENABLE=0 是否使用sim進行代碼相似度的檢測
OJ_HTTP_JUDGE=0 是否使用HTTP方式連接數據庫,如果啟用,則前面的HOST_NAME等設置忽略。
OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline 使用HTTP方式連接數據庫的基礎地址,就是OJ的首頁地址。
OJ_HTTP_USERNAME=admin 使用HTTP方式所用的用戶帳號(HTTP_JUDGE權限),該帳號登錄時不能啟用VCODE圖形驗證碼,但可以登錄成功後啟用。
OJ_HTTP_PASSWORD=admin 密碼
OJ_OI_MODE=0 是否啟用OI模式,即無論是否出錯都繼續判剩余的數據,在ACM比賽中一旦出錯就停止運行。
OJ_SHM_RUN=0 是否使用/dev/shm的共享內存虛擬磁盤來運行答案,如果啟用能提高判題速度,但需要較多內存。
OJ_USE_MAX_TIME=1 是否使用所有測試數據中最大的運行時間作為最後運行時間,如果不啟用則以所有測試數據的總時間作為超時判斷依據。
OJ_LANG_SET=0,1,2,3,4 #判哪些語言的題目

如果是判題的時候有錯就得來看這裡。我同學在和我合作的時候就更改了數據庫用戶,我還花了5大洋進了hustoj作者大神的群。別人一句話就解決了O_o

 

 

若無服務器且訪問過多的可以建立分布式判題系統

數據庫中

grant all privileges on jol.* to 'judge'@'%' identified by 'judge_pass' with grant option;

 

檢查/etc/mysql/my.cnf 確保

bind-address        = 0.0.0.0

高負載的情況下最好設置更多的連接數。

max_connections = 512

 

其次,配置各web程序連接到數據庫。
修改include/db_info.inc.php

static  $DB_HOST="數據庫服務器ip";
static  $DB_NAME="jol";
static  $DB_USER="judge";
static  $DB_PASS="judge_pass";

 

第三,配置各判題程序連接到數據庫,分配任務。

復制代碼
OJ_HOST_NAME=數據庫服務器ip
OJ_USER_NAME=judge
OJ_PASSWORD=judge_pass
OJ_DB_NAME=jol
...
OJ_TOTAL=判題機總數
OJ_MOD=本機編號,從0開始
...
復制代碼

 

兩台機器都裝

sudo apt-get install ssh

 

第四,復制測試數據目錄到各判題機。


從主機向判題機復制

scp -r /home/judge/data  root@判題機ip:/home/judge/

或用同步命令。

rsync -vzrtopg --progress --delete /home/judge/data root@判題機ip:/home/judge/

判題機從主機復制

scp -r root@主機ip:/home/judge/data  /home/judge/

或用同步命令。

rsync -vzrtopg --progress --delete root@主機ip:/home/judge/data /home/judge/

 

重啟mysql

sudo /etc/init.d/mysql restart

重啟Apache

sudo /etc/init.d/apache2 restart

重啟judge

sudo pkill judged&&sudo judged

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved