1 頁 (共 1 頁)

[問題]自動公告功能

文章發表於 : 2007-03-24 1:42 am
ching8885
想加入自動公告
出發點嘛...當然是管理員我懶囉
打算在chat.php動手腳,也不希望動資料庫

在chat.php 找
代碼: 選擇全部
echo '<script language=javascript>parent.chat_view();</script>';  //更新聊天內容


之前加了

代碼: 選擇全部
if(date(s,$now) == 30 and (date(i,$now) == 01 || date(i,$now) == 06 || date(i,$now) == 11 || date(i,$now) == 16 || date(i,$now) == 21 || date(i,$now) == 26 || date(i,$now) == 31 || date(i,$now) == 36 || date(i,$now) == 41 || date(i,$now) == 46 || date(i,$now) == 51 || date(i,$now) == 56))
{
   
   $s='###1###0###<font color="#A9A9A9">自動公告</font>';
   $fp = fopen($_filename,'a+');
         while(!is_writeable($_filename)){}
         fputs($fp,$s."\r\n");
        fclose($fp);
        unset($s);
        unset($fp);
}


運作方式是
假若有人刷chat.php的時候
檢查時間是不是每5分鐘的第30秒
的確,是一個較被動的方法

少人在線時,未必一定有玩家在那一秒刷chat.php
所以有些時候特定時間沒有出現自動公告
不過少人甚至沒有人在玩,有沒有公告出現也沒關係吧

但問題在於多人在線時
同一秒刷chat.php的人會不止一個
實際測試時,在線20人左右,便會常常同時出現4~5句自動公告

有沒有方法限制特定時間最多只能出現一次公告呢?
希望各位大大給些意見!

文章發表於 : 2007-03-24 8:47 pm
涅魂
公告內容大多為固定的,所以我認為可以建立一個新的檔案來寫下公告內容,假設名稱為f.txt,內容如下
代碼: 選擇全部
公告1
公告2
公告3

接著可以用file函式載入f.txt後用rand()函式來隨機顯示,不用加在chat_log.txt內喔^^

文章發表於 : 2007-03-24 10:22 pm
ching8885
很高深 =.= 完全摸不著頭腦的說....

文章發表於 : 2007-03-24 10:36 pm
ching8885
經過一陣子的思考....涅大說的>file函式載入f.txt後用rand()函式來隨機顯示<
是在chat.php做的嗎?
在chat.php某地方產生亂數
假如數值<= XX的話
之後就for loop 載入寫了公告的檔案資料
用echo'公告資料<br>';將每行資料顯示出來?

是這樣嗎?

文章發表於 : 2007-03-25 4:26 pm
涅魂
是的,您說的沒錯^^

程式寫法大概如下
代碼: 選擇全部
if(rand(1,10) == 1) //十分之一的機率顯示公告
{
   $f=file('./f.txt');
   $f_max=count($f)-1;
   echo '<b>[公告]</b> '.$f[rand(0,$f_max)].'<br>';
   unset($f);
}

文章發表於 : 2007-03-25 5:53 pm
ching8885
謝涅大
這個非常簡單、方便、易用
謝謝

文章發表於 : 2007-03-25 9:30 pm
涅魂
不用客氣,能解決問題就好了

有問題的話歡迎繼續問喔 :wink:

文章發表於 : 2007-03-28 8:15 am
齋月
飄回來看一下
不錯的IDEA
回到家就來試試 XD