1,配置文件
創新互聯公司長期為上1000+客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為永興企業提供專業的網站制作、網站設計,永興網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。
復制代碼代碼如下:
?php
define('PATH',dirname($_SERVER['SCRIPT_NAME'])); //聊天室目錄
define('CHAT_NAME','PHP聊天室'); //聊天室名稱
define("MESS", "mess.txt"); //聊天信息
define("PERSON", "person.txt"); //在線人名單
define("RETIME",3); //刷新時間
define("LINE",11); //公共窗口顯示的行數
define("PRLINE",5); //私聊窗口顯示的行數
define("MAX",50); //聊天室人數限制
define("MAXTIME",600000); //最大不發言時間,單位是毫秒
define("WELCOME","font color=blue歡迎光臨".CHAT_NAME.",請遵守聊天室規則,不要惡意刷新,不要使用不文明用語。/font"); //歡迎語
?
2,公共函數文件
(1)chklogin()函數檢查用戶昵稱是否重復。參數$user是登錄用戶的昵稱。當函數返回值為True時,昵稱不可用;返回值為False時,昵稱可用。
復制代碼代碼如下:
function chklogin($file,$user){
$boo = false;
if(file_exists($file)){
$userarr = file($file);
/* 判斷昵稱是否重復 */
foreach($userarr as $value){ //判斷昵稱是否重復
$tmparr = explode('#',$value); //使用“#”作為分隔符來拆分字符串
if($user == $tmparr[0]){ //如果用戶數組中包含此用戶
$boo = true;
break;
}
}
}
return $boo;
}
(2)addlogin()函數將登錄的用戶昵稱寫入文件中,保存格式為:昵稱#IP#性別,參數$file是保存的文件地址,$user是用戶昵稱,$ip是登陸IP,$sex表示用戶性別。
復制代碼代碼如下:
function addlogin($file,$user,$ip,$sex){
$tmp = $user.'#'.$ip.'#'.$sex.chr(13).chr(10); //chr(13) 是一個回車,Chr(10) 是個換行符,chr(32) 是一個空格符
$fp = fopen($file,'a'); //寫入方式在文件末尾追加信息
$boo = fwrite($fp,$tmp);
fclose($fp);
return $boo;
}
(3)storeuser()函數的作用是將用戶信息存為一個數組。格式為“用戶名,用戶性別”,參數$file是用戶列表文件。代碼如下:
復制代碼代碼如下:
function storeuser($file){
$tmparr = file($file); //將文件內容寫入數組
$userarr = array(); //創建數組
foreach($tmparr as $value){ //循環輸出數組內容
$tmparr = explode('#',$value); //使用#拆分字符串
$userarr[] = $tmparr[0].','.$tmparr[2]; //將用戶名和用戶性別保存到新數組中
}
return $userarr;
}
(4)addmess()函數將發言內容寫入文件中。參數$file是保存的文件地址,$mess是要保存的內容
復制代碼代碼如下:
function addmess($file,$mess){
$fp = fopen($file,'a'); //以追加的形式打開文件
$boo = fwrite($fp,$mess.chr(13).chr(10)); //將信息寫入文件中
fclose($fp); //關閉文件
return boo;
}
(5)deluser()函數的作用是刪掉用戶。參數$file是保存的文件地址,$user是要刪除的用戶
復制代碼代碼如下:
function deluser($file,$user){
$tmparr = file($file); //將文件內容寫入數組
$rearr = array(); //創建數組
foreach($tmparr as $value){ //循環輸出數組內容
$tmp = explode('#',$value); //使用#拆分字符串
if($tmp[0] != $user){ //如果變量中的用戶名和當前用戶不相等
$rearr[] = $value; //將該用戶信息保存到新數組中
}
}
$fp = fopen($file,'w+'); //以只寫的方式打開文件
foreach($rearr as $value){ //循環數組
fwrite($fp,$value); //寫入數組內容
}
fclose($fp); //關閉文件
}
(6)getRows()函數的作用是返回文件的行數,參數$file是文件名
復制代碼代碼如下:
function getRows($file){
if(file_exists($file)){ //如果文件存在
$fl = file($file); //將文件按行寫入數組
return count($fl); //求出數組長度并返回
}else{
return 0; //如果文件不存在,返回0
因實驗室項目-網站開發需求,需要增加會員聊天功能,特修改phpfreechat-1.7(phpfreechat官網)以適應項目需求。我所選擇的是phpfreechat-1.7,因此下面的文字只針對phpfreechat-1.7,忽略phpfreechat-2.1.0版本phpfreechat,顧名思義,PHP,free,chat,是一款開源的網頁版聊天程序,前臺是css+js,用到了prototype庫;后臺是php,數據庫支持方面包括MySQL,orcal,file比較全。首先介紹一下phpfreechat的優點,最大的優點是開放源代碼,而且功能比較齊全,對開發者而言可定制性強,通過傳遞參數即可實現包括前臺樣式,后臺數據庫的定制。并且提供了很多主題供開發者定制。缺點便是可參考的文檔太少。后臺代碼的耦合性太大,不便于開發者嵌入到自己的網站中。沒有采用MVC架構,代碼比較混雜。前臺js用到了prototype庫,所以開發過程中不能使用主流的jQuery庫,否則會沖突,造成了很大的不便。后臺的數據庫設計不合理,將所有的內容存儲在一個table中,當用戶量大時性能會很低,而且不容易理解數據庫的設計。只能一點一點看代碼去理解。
下面介紹一下我的開發過程。我做的主要工作便是根據項目的需求將整個代碼部分的前端后臺進行分離。前臺主要是用戶參數和聊天界面的初始化,后臺主要是響應前臺的Ajax請求讀取和寫數據庫。同時寫死了很多不需要的可定制的代碼。提高了初始化的效率。
總結一下就是,做聊天部分前期沒有詳細考察那些開源的聊天程序,上手比較倉促,做了段時間后由于時間關系有點騎虎難下,所以前期考察哪個開源軟件更合適很重要?。〉沁€是從中學到了很多東西,設計模式,代碼風格之類的,收獲很大。
你不要這么設置 你把那一列 作為 最后一次通信的時間戳 (不是最后一次說話的時間)
你聊天室 是不是每隔 一段時間 (比如 5秒) 自動刷新? 每次刷新 就重新設置該用戶 這個字段為當前時間戳 那么 當 這個用戶下線或者直接關閉網頁 超過一段時間(比如 一分鐘,也就是這個字段停留在一分鐘前的時間戳,那就判定為下線)
你好,
你有那種,
可以互聯互通的,
一種窗口么,
我可以這樣,
直接教你怎么操作,
如果光說的話,
或者用語言文字表述的話,
是很困難的。
首先聊天室主要的瓶頸并不在于用什么語言做后端,而在于整體處理架構。
當你打算做聊天室的時候你可以自己看看如何解決以下問題:
數據的傳輸(如何及時把收到的數據傳輸給別人)
數據庫的處理(對于數據的操作,萬人在線的聊天室數據量產生肯定很大,那么怎么保證數據庫能扛得下去)
web服務器是否有能力對抗那么大的并發數量
服務器的帶寬是否能支撐下去
以上四點是基于B/S架構必有的問題,如果并非B/S架構那么后端也沒必要使用PHP吧?
第一點、可以使用websocket進行解決,但缺點是不能支持舊版本的瀏覽器
(如果需要支持可以使用AJAX輪詢進行處理,但會加大服務器壓力)
第二點、可以增加緩存層,所有數據先進緩存,然后一定時間把緩存寫入數據庫。前提是需要內存足夠大
(或者可以使用數據庫中間件進行讀寫分離,或者直接分表處理)
第三點、再對WEB服務器優化后你能做的只有創建集群,用幾臺機去緩解壓力
第四點、買帶寬
說白了,沒有一定的金錢做為支持的背景下thinkphp和c做出來的性能相差不大,因為瓶頸并不在它那
當前文章:php數據庫會員在線聊天 php會員管理系統
當前URL:http://m.newbst.com/article30/hjjppo.html
成都網站建設公司_創新互聯,為您提供移動網站建設、標簽優化、搜索引擎優化、做網站、Google、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯