網(wǎng)頁(yè)一般是單向主動(dòng)短鏈接,實(shí)時(shí)更新實(shí)在有些不便,即使一方掉線,另一方也不能及時(shí)感知。一般所謂的實(shí)時(shí)刷新,大多采用定時(shí)刷新(輪詢(xún)),或長(zhǎng)輪詢(xún)的方式做,ajax用于更新數(shù)據(jù)確實(shí)是比較簡(jiǎn)單方便的。
創(chuàng)新互聯(lián)建站專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、通海網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為通海等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
輪詢(xún)你就settimeout,長(zhǎng)輪詢(xún)你就每次接收數(shù)據(jù)成功后,再來(lái)一次長(zhǎng)輪詢(xún)。但你鏈接別人的數(shù)據(jù),了解一下供應(yīng)商的刷新機(jī)制、周期再做考慮。
當(dāng)然這些都是偽實(shí)時(shí),真的實(shí)時(shí)用http協(xié)議是不合適的,你得用flash插件做。而你用的是api供應(yīng)商的東西,這條路就基本走不通了。
有兩種實(shí)現(xiàn)方法:
1、你可以用PHP服務(wù)器推技術(shù),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),主動(dòng)推送到頁(yè)面顯示。相關(guān)技術(shù)可以參考文檔。百度也很多。
2、你可以用Javascript,每過(guò)一秒鐘,使用Ajax獲取數(shù)據(jù),一秒鐘刷新一次,也可以實(shí)現(xiàn)的。
第一種我也不會(huì)。第二種相信你可以的。
while的話是循環(huán),你用了只會(huì)一行行加
前言 現(xiàn)在很多有個(gè)人主頁(yè)或者博客的朋友選擇租用虛擬主機(jī) 而相當(dāng)一部分虛擬主機(jī)支持php 如果你有一個(gè)支持php的主機(jī)空間 有沒(méi)有用php把自己的網(wǎng)站武裝起來(lái)呢?
能不能讓php為你的網(wǎng)頁(yè)添加一些每隔一段時(shí)間就自動(dòng)更新的內(nèi)容 以更好的吸引訪客呢?實(shí)現(xiàn)這一功能并不需要太高深的編程知識(shí) 請(qǐng)看以下例子 ?(一)英語(yǔ)諺語(yǔ)
讓我們來(lái)看一個(gè)簡(jiǎn)單的應(yīng)用 讓php程序從數(shù)據(jù)庫(kù)中隨機(jī)提取一行記錄 顯示在網(wǎng)頁(yè)上 隔 分鐘再去讀取另一條記錄 英漢對(duì)照的諺語(yǔ)是個(gè)適合顯示的內(nèi)容
考慮到放置個(gè)人主頁(yè)的廉價(jià)虛擬主機(jī)多數(shù)不支持MySQL之類(lèi)的數(shù)據(jù)庫(kù) 我們使用文本型數(shù)據(jù)文件來(lái)存放數(shù)據(jù) 這對(duì)于流量不很大的網(wǎng)站來(lái)說(shuō)足夠了 建立一個(gè)文本文件 命名為english dat 內(nèi)容如下
A bad beginning makes a bad ending 惡其始者必惡其終
A bad bush is better than the open field 有勝于無(wú)
A bad promise is better than a good lawsuit 吃虧的和解也比勝訴強(qiáng)
A bad conscience is a snake in one s heart 做賊心虛
A bad custom is like a good cake better broken than kept 壞習(xí)慣像鮮餡餅 分食要比保存好
A bad padlock invites a picklock 開(kāi)門(mén)揖盜
……
注意 每行是一條完整的記錄 中間不要換行 文件中不能有半角的雙引號(hào)( )否則在輸出數(shù)據(jù)時(shí)程序會(huì)解析出錯(cuò) 網(wǎng)上有很多這樣的內(nèi)容 搜索一下即可 也可以去我的網(wǎng)站 musicfly net/english dat下載一個(gè)數(shù)據(jù)文件
下面就是編寫(xiě)讀取數(shù)據(jù)的程序了 建立一個(gè)文本文件 命名為english dat 加入源代碼如下
<?php
$filename = english dat ; //數(shù)據(jù)文件名
$refresh = ; //更新周期(以秒為單位 可根據(jù)需要自行調(diào)整)
$data = file($filename); //將數(shù)據(jù)文件裝入一個(gè)數(shù)組
$num_lines = count($data); //數(shù)據(jù)文件行數(shù) 也就是記錄條數(shù) mt_srand(floor(time() / $refresh));
$id = mt_rand( $num_lines ); //隨機(jī)選擇一條記錄號(hào)
$content = chop($data[$id]); //根據(jù)記錄號(hào)選擇相應(yīng)的數(shù)據(jù) 并截去最后的換行符
echo document write( $content ); ; //用javascript形式輸出數(shù)據(jù)?>
將english dat和english php存盤(pán) 上傳至服務(wù)器的同一個(gè)目錄下
最后一道工序就是讓你的網(wǎng)頁(yè)調(diào)用這個(gè)php程序來(lái)顯示內(nèi)容了 因?yàn)閜hp運(yùn)行的結(jié)果是以javascript形式輸出的 我們只要把這段php當(dāng)成一段javascrupt來(lái)調(diào)用即可 方法是 用記事本或網(wǎng)頁(yè)編輯軟件打開(kāi)你要修改的文件 在你想讓動(dòng)態(tài)內(nèi)容顯示的位置加入以下代碼
<script language= javascript src= english php ></script>
注意 如果你修改的文件和english php不在一個(gè)目錄下 要在src= 里注明english php的相對(duì)路徑
把這個(gè)修改后的文件上傳至服務(wù)器 在瀏覽器中打開(kāi) 如果你每一步做得都正確 應(yīng)該就可以看到數(shù)據(jù)文件中的內(nèi)容顯示出來(lái)了!過(guò) 分鐘刷新一下頁(yè)面看看 是不是顯示的內(nèi)容變化了?而你并沒(méi)有為更新這些內(nèi)容做什么額外的勞動(dòng) php程序?yàn)槟阕隽?/p>
如果你的朋友想在自己的網(wǎng)頁(yè)或者博客上實(shí)現(xiàn)同樣的功能而又沒(méi)有支持php的主機(jī) 可以通過(guò)以<script language= javascript src=
當(dāng)然 這個(gè)程序還可能存在編碼方式不兼容的問(wèn)題 因?yàn)閮?nèi)容都是以gb 編碼顯示出來(lái)的 用在UTF編碼的網(wǎng)頁(yè)上 中文會(huì)變成亂碼 解決的方法不在本文的討論范圍內(nèi) 請(qǐng)搜索有關(guān)教程
實(shí)現(xiàn)了這個(gè)功能 你已經(jīng)開(kāi)始從的靜態(tài)世界向php的動(dòng)態(tài)世界進(jìn)軍了 來(lái)日方長(zhǎng) 下一次 讓我們看看怎樣用php為你的網(wǎng)頁(yè)加個(gè) 每日星座運(yùn)勢(shì) 功能
class=akey target=_blank你的網(wǎng)址/程序路徑/english php ></script>的方式調(diào)用你主機(jī)上的程序來(lái)顯示同樣的內(nèi)容
當(dāng)然 這個(gè)程序還可能存在編碼方式不兼容的問(wèn)題 因?yàn)閮?nèi)容都是以gb 編碼顯示出來(lái)的 用在UTF編碼的網(wǎng)頁(yè)上 中文會(huì)變成亂碼 解決的方法不在本文的討論范圍內(nèi) 請(qǐng)搜索有關(guān)教程
lishixinzhi/Article/program/PHP/201311/21515