如何使用PHP獲取網(wǎng)絡(luò)上文件
更新時(shí)間:2006年10月09日 00:00:00 作者:
<!-- generateindex.php -->
<?php
//設(shè)置我們將要使用的文件
$srcurl = "http://localhost/index.php";
$tempfilename = "tempindex.html";
$targetfilename = "index.html";
?>
<HTML>
<HEAD>
<TITLE>
Generating <?php echo("$targetfilename"); ?>
</TITLE>
</HEAD>
<BODY>
<P>Generating <?php echo("$targetfilename"); ?>...</P>
<?php
//首先刪除上次操作可能遺留下來(lái)的臨時(shí)文件。
//這個(gè)過(guò)程可能會(huì)提示錯(cuò)誤,所以我們使用@以防止報(bào)錯(cuò)。
@unlink($tempfilename);
//通過(guò)一個(gè)URL的請(qǐng)求裝入動(dòng)態(tài)版本。
//在我們接收到相關(guān)內(nèi)容之前,Web服務(wù)器會(huì)對(duì)PHP進(jìn)行處理
//(因?yàn)楸举|(zhì)上我們是在模擬一個(gè)Web瀏覽器),
//所以我們將獲得的是一個(gè)靜態(tài)的HTML頁(yè)面。
//'r'指出我們只要求對(duì)這個(gè)“文件”進(jìn)行讀操作。
$dynpage = fopen($srcurl, 'r');
//處理錯(cuò)誤
if (!$dynpage) {
echo("<P>Unable to load $srcurl. Static page ".
"update aborted!</P>");
exit();
}
//將這個(gè)URL的內(nèi)容讀入到一個(gè)PHP變量中。
//指定我們將讀取1MB的數(shù)據(jù)(超過(guò)這個(gè)數(shù)據(jù)量一般是意味著出錯(cuò)了)。
$htmldata = fread($dynpage, 1024*1024);
//當(dāng)我們完成工作后,關(guān)閉到源“文件”的連接。
fclose($dynpage);
//打開(kāi)臨時(shí)文件(同時(shí)在這個(gè)過(guò)程中建立)以用來(lái)寫入(注意'w'的用法).
$tempfile = fopen($tempfilename, 'w');
//處理錯(cuò)誤
if (!$tempfile) {
echo("<P>Unable to open temporary file ".
"($tempfilename) for writing. Static page ".
"update aborted!</P>");
exit();
}
//將靜態(tài)頁(yè)面的數(shù)據(jù)寫入到臨時(shí)文件中
fwrite($tempfile, $htmldata);
//完成寫入后,關(guān)閉臨時(shí)文件。
fclose($tempfile);
//如果到了這里,我們應(yīng)該已經(jīng)成功地寫好了一個(gè)臨時(shí)文件,
//現(xiàn)在我們可以用它來(lái)覆蓋原來(lái)的靜態(tài)頁(yè)面了。
$ok = copy($tempfilename, $targetfilename);
//最后刪除這個(gè)臨時(shí)文件。
unlink($tempfilename);
?>
<P>Static page successfully updated!</P>
</BODY>
</HTML>
<?php
//設(shè)置我們將要使用的文件
$srcurl = "http://localhost/index.php";
$tempfilename = "tempindex.html";
$targetfilename = "index.html";
?>
<HTML>
<HEAD>
<TITLE>
Generating <?php echo("$targetfilename"); ?>
</TITLE>
</HEAD>
<BODY>
<P>Generating <?php echo("$targetfilename"); ?>...</P>
<?php
//首先刪除上次操作可能遺留下來(lái)的臨時(shí)文件。
//這個(gè)過(guò)程可能會(huì)提示錯(cuò)誤,所以我們使用@以防止報(bào)錯(cuò)。
@unlink($tempfilename);
//通過(guò)一個(gè)URL的請(qǐng)求裝入動(dòng)態(tài)版本。
//在我們接收到相關(guān)內(nèi)容之前,Web服務(wù)器會(huì)對(duì)PHP進(jìn)行處理
//(因?yàn)楸举|(zhì)上我們是在模擬一個(gè)Web瀏覽器),
//所以我們將獲得的是一個(gè)靜態(tài)的HTML頁(yè)面。
//'r'指出我們只要求對(duì)這個(gè)“文件”進(jìn)行讀操作。
$dynpage = fopen($srcurl, 'r');
//處理錯(cuò)誤
if (!$dynpage) {
echo("<P>Unable to load $srcurl. Static page ".
"update aborted!</P>");
exit();
}
//將這個(gè)URL的內(nèi)容讀入到一個(gè)PHP變量中。
//指定我們將讀取1MB的數(shù)據(jù)(超過(guò)這個(gè)數(shù)據(jù)量一般是意味著出錯(cuò)了)。
$htmldata = fread($dynpage, 1024*1024);
//當(dāng)我們完成工作后,關(guān)閉到源“文件”的連接。
fclose($dynpage);
//打開(kāi)臨時(shí)文件(同時(shí)在這個(gè)過(guò)程中建立)以用來(lái)寫入(注意'w'的用法).
$tempfile = fopen($tempfilename, 'w');
//處理錯(cuò)誤
if (!$tempfile) {
echo("<P>Unable to open temporary file ".
"($tempfilename) for writing. Static page ".
"update aborted!</P>");
exit();
}
//將靜態(tài)頁(yè)面的數(shù)據(jù)寫入到臨時(shí)文件中
fwrite($tempfile, $htmldata);
//完成寫入后,關(guān)閉臨時(shí)文件。
fclose($tempfile);
//如果到了這里,我們應(yīng)該已經(jīng)成功地寫好了一個(gè)臨時(shí)文件,
//現(xiàn)在我們可以用它來(lái)覆蓋原來(lái)的靜態(tài)頁(yè)面了。
$ok = copy($tempfilename, $targetfilename);
//最后刪除這個(gè)臨時(shí)文件。
unlink($tempfilename);
?>
<P>Static page successfully updated!</P>
</BODY>
</HTML>
您可能感興趣的文章:
- 使用php測(cè)試硬盤寫入速度示例
- PHP判斷是否連接上網(wǎng)絡(luò)的方法
- PHP網(wǎng)絡(luò)操作函數(shù)匯總
- PHP判斷網(wǎng)絡(luò)文件是否存在的方法
- 使用php來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)
- 談?wù)勑率秩绾螌W(xué)習(xí)PHP網(wǎng)絡(luò)編程
- PHP 網(wǎng)絡(luò)開(kāi)發(fā)詳解之遠(yuǎn)程文件包含漏洞
- 使用PHP獲取網(wǎng)絡(luò)文件的實(shí)現(xiàn)代碼
- PHP實(shí)現(xiàn)的簡(jiǎn)單網(wǎng)絡(luò)硬盤
相關(guān)文章
PHP 第二節(jié) 數(shù)據(jù)類型之字符串類型
PHP 數(shù)據(jù)類型之字符串類型,一般就是用單引號(hào)或雙引號(hào)包括的東西2012-04-04php學(xué)習(xí)之簡(jiǎn)單計(jì)算器實(shí)現(xiàn)代碼
php學(xué)習(xí)之簡(jiǎn)單計(jì)算器實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-06-06PHP4實(shí)際應(yīng)用經(jīng)驗(yàn)篇(9)
PHP4實(shí)際應(yīng)用經(jīng)驗(yàn)篇(9)...2006-10-10