首頁 >後端開發 >php教程 >php+R語言分析網站回應時間

php+R語言分析網站回應時間

巴扎黑
巴扎黑原創
2016-11-12 15:28:231717瀏覽

 要做一個網路爬蟲,抓取網頁上的特定內容。以前有高年級研究生學長寫過一個,但是老師嫌棄時間太久,上千個數據而已,竟然要用一夜,這次要我來做,我想先進行一下可行性的研究,要用到R語言進行統計。 

    這次試驗的困難點有兩個,或者說實際上只有一個,就是資料的標準化表示。以前沒用過php進行文件讀寫操作,這是頭一次。要考慮的是文件讀寫的頻率,雖然只是一個實驗,但效率還是要考慮的。過於頻繁的文件讀寫,對磁碟過於耗時的操作,是個大問題。所以這個要考慮。其實是資料的格式問題,以什麼樣的格式儲存。要考慮後續R語言處理的問題,R語言可以處理純文本,資料之間可以使用分隔符,比喻逗號、甚至是製表符。所以文件裡面的資料打算用逗號分隔了。

     先貼上PHP程式碼 
include ("php_lib/LIB_http.php"); 
error_reporting(E_ALL^E_NOTICE); 
**** $ref = "http://www.*****"; 
$filename = 'sitevisitors.txt'; 


$first=microtime(get_as_float); 
for($n=0;$n    $betime=microtime(get_as_float); 
    $return_arry = http_get_withheader($target,$ref. ; 
    $count[ $n] = $resulttime; 
    //echo $count[$n]."n"; 
    echo"n".$n; 

$fp = fopen("data.txt", "a");
//fputs ($fp, "$count[0]"); 
for($n=0;$n    fputs($fp, "rn".$count[$n] ); 

$last=microtime(get_as_float); 
$result=$last-$first; 
fclose ($fp); 
echo"nend this test"; ; 
?> 

    由於這個網站不便公佈,所以上連接地址和主機地址用*號代替,請諒解。程式會先設計一個5000個元素的數組,然後發送5000次http請求,記錄下每次的時間。 http封包好像會有這個時間,但自己記不真切了,所以用的是microtime()函數,注意要加上get_as_float才可以做減法,而且加上include ("php_lib/LIB_http.php");屏蔽掉所有的php notice. 
    
    所有的資料全都寫進data.txt文件,要注意的是,文件資料格式應該是矩陣,就算只有一個資料來源,即只有一列,也要每個資料獨佔一行,不能連著寫,例如不能1,2,3,4…,而應該是: 




… 
    
    之所以為R對矩陣做為對做矩陣進行讀寫,所以這麼寫最方便(也有可能有更好的方法,只是我不知道而已)。

    得到時間後,開啟R語言環境,接著做統計: 
    ①讀取資料: 
data    ②求平均: 
mean(data[,1]) 
注意不能是mean(data),否則會出現以下警告: 
[1] NA ault
警告訊息: 
[ mean.default (data) : 參數不是數值也不是邏輯值:回复NA 
data[,1]表示矩陣data的第一列(其實這裡也只有一列,但也要這麼寫)。
    ③想畫出散佈圖,但是座標精確度太小,分辨不出,這還要繼續研究: 
cmydatamydatanamse(mydata)with(mydata,plot(x,y,pch=19,main="the result")) 

圖倒是畫出來了,但是坐標精度只到小數點後2位,如何提高坐標精度,目前正在研究,options(digits)是不行了。接著想吧。 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn