Nejnovější články nejen z Intervalu
Dnes vám přinášíme dva články s podobnou tématikou. Oba řeší, jak získat aktuality z informačních webů. Jeden v PHP aktuální kurzy ČNB, druhý (tedy tento) naopak v ASP aktuální články. Jako příklad jsem použil náš Interval.
Na adrese http://www.interval.cz/xchange.txt je k dispozici soubor výměny linků, který obsahuje seznam aktuálních článků. Jsou v něm kompletní hyperlinky na pět nejnovějších článků, které jsou každý na samostatném řádku. Soubor je automaticky v pravidelných časových intervalech aktualizován.
Obsah souboru xchange.txt je tento:
<a href=“http://www.interval.cz/r-article.asp?id=877″>Vložení efektu z Flashe do HTML</a><br>
<a href=“http://www.interval.cz/r-article.asp?id=884″>Chudým vstup zakázán</a><br>
<a href=“http://www.interval.cz/r-article.asp?id=879″>DHTML editor kompatibilní se všemi prohlížeči</a><br>
<a href=“http://www.interval.cz/r-article.asp?id=872″>Jak vědět více o návštěvnících pomocí PHP</a><br>
<a href=“http://www.interval.cz/r-article.asp?id=882″>Jak si naplánovat služební cestu</a><br>
Vše si dobře naplánujte
Doporučuji stahovat soubor mimo webovou aplikaci pomocí naplánované úlohy. Tento způsob zrealizujete nejjednodušeji tak, že napíšete VBS skript, kterému zajistíte pravidelné spouštění pomocí nějakého plánovače úloh. Plánovač úloh je ve Windows 2000 obsažen standardně a v NT 4 se objeví po instalaci MSIE 5.0. Spouštění úloh můžete naplánovat také pomocí standardních AT příkazů. Kdo ale tento způsob již někdy zkoušel, zjistil, že je poněkud „neohrabaný“.
Většina z vás nemá možnost spouštět skripty mimo vlastní IIS, proto předkládám řešení, které je možné integrovat do libovolného ASP skriptu. Aktualizace je pak prováděna v případě uplynutí definovaného časového intervalu. Samozřejmě, že nelze dosáhnout přesného času aktualizace, protože ta je závislá na přístupu na stránku, kde je skript aplikován.
Celá akce je provedena ve dvou krocích – stažení a zpracování souboru. Ten, komu vyhovuje formát souboru tak, jak jej poskytujeme, použije pouze první část aktualizace, která zajistí stažení a uložení souboru.
Stažení a uložení souboru
Ke stažení souboru z Intervalu použijete objekt Microsoft.XMLHTTP, který umí načíst obsah z jakékoli adresy. Nebudu zde nyní podrobně rozebírat, jak tento objekt funguje. Rovnou uvedu funkci, která vrátí obsah požadované URL jako svoji návratovou hodnotu. Kód následující funkce jsem převzal z článku vydaného na serveru ASP Network na této adrese.
<%
Function IncludeHTTP(byVal URL)
Dim HTTP, HTML, I
Set HTTP = Server.CreateObject(„Microsoft.XMLHTTP“)
HTTP.Open „GET“, URL, False, „“, „“
HTTP.Send()
For I = 1 To LenB(HTTP.ResponseBody)
HTML = HTML & Chr(AscB(MidB(HTTP.ResponseBody, I, 1)))
Next
IncludeHTTP = HTML
Set HTTP = Nothing
End Function
%>
Jak udělat plánovanou úlohu, jsem již popisoval v článku Plánované spouštění ASP kódu. Pro ty, co tento článek nečetli, v krátkosti uvedu princip řešení. Do proměnné v objektu application si uložíte čas posledního provedení akce. Pokud od posledního provedení uplynul požadovaný čas nebo čas není dostupný, je provedena akce a uložen čas posledního provedení.
<%
If DateDiff(„h“,Application(„cas“),now)>4 or Application(„cas“)=0 then ‚ soubor budeme stahovat každé 4 hodiny
Dim ObjFS,ObjStream
cestatmp=server.MapPath(„.“)&“/interval.tmp“
Set ObjFS=server.CreateObject(„Scripting.FileSystemObject“)
Set ObjStream=ObjFS.createTextFile(cestatmp,true)
obsah=includeHTTP(„http://www.interval.cz/xchange.txt“)
Objstream.write(obsah)
ObjStream.Close
Set ObjStream=Nothing
Set ObjFS=Nothing
‚ ZDE BUDE VOLÁNÍ PROCEDURY NA ÚPRAVU KÓDU
Application.lock
Application(„cas“)=now ‚ uložíme čas posledního provedení
Application.unlock
End If
%>
Pravděpodobně se ale stane, že vám nebude naše formátování z nějakého důvodu vyhovovat (např. vzhled vašich stránek). Následující funkce vám umožní (nejen) tento soubor upravit podle vašich požadavků:
<% Sub xchange(pocetpolozek,zdroj,cil)
on error resume next
dim uvod,blok,konec
dim pocet
Dim ObjFS,ObjStream
Set ObjFS=server.CreateObject(„Scripting.FileSystemObject“)
Set ObjStream=ObjFS.OpenTextFile(zdroj)
uvod=“<img src=““/images/invisible.gif““ width=1 height=6 border=““0″“ ALT=““Nic““><br><table cellspacing=““0″“ cellpadding=““0″“ border=““0″“ bgcolor=““black““><tr><td><table cellspacing=““1″“ cellpadding=““2″“ width=““138″“ border=““0″“><tr><td align=““center““ bgcolor=““white““><a href=““http://www.interval.cz““ target=““_blank““>Interval.cz</a></td></tr><tr><td bgcolor=““#EFF1f8″“><table cellspacing=““0″“ cellpadding=““1″“ border=““0″“>“
konec=“</table></td></tr></table></td></tr></table>“
nahr1=“<tr><td>“
nahr2=“<A href=“
nahr3=“ target=““_blank““>“
blok=uvod
pocet=0
do while err.number=0 and pocet < pocetpolozek
pocet=pocet+1
text=““
text=ObjStream.readline
if len(text)>10 then
kdeje=instr(1,ucase(text),ucase(„<a href=“))
kdeje1=instr(1,text,“>“)
url=mid(text,kdeje+8,kdeje1-kdeje-8)
blok=blok+nahr1+nahr2+url+nahr3
zbytek=mid(text,kdeje1+1,len(text)-kdeje1)
blok=blok+zbytek+“</TD></TR>“&VBCRLF
end if
loop
blok=blok+konec
ObjStream.Close
Set ObjStream=Nothing
Set ObjStream=ObjFS.createTextFile(cil)
objstream.write(blok)
ObjStream.Close
Set ObjStream=Nothing
Set ObjFS=Nothing
on error goto 0
end sub
Nakonec je třeba přidat „volání“ procedury na vyznačené místo v kódu naplánované úlohy. Celé „volání“, včetně nastavení vstupních parametrů vypadá takto:
zdroj=server.MapPath(„.“)&“\interval.tmp“
cil=server.MapPath(„.“)&“\interval.txt“
xchange 5,zdroj,cil
Kód funkcí můžete umístit do souboru global.asa (viz článek Plánované spouštění ASP kódu) nebo do libovolného skritu, o kterém víte, že je na něj často přistupováno.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Responzivní design: Proč by ho neměl ignorovat žádný vývojář?
27. listopadu 2023 -
Souboj na trhu s CPU pro servery: AMD vs. Intel
8. prosince 2023 -
Netcat a Ncat
8. prosince 2022
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024