>백엔드 개발 >PHP 튜토리얼 >php+R 언어 분석 웹사이트 응답 시간

php+R 언어 분석 웹사이트 응답 시간

巴扎黑
巴扎黑원래의
2016-11-12 15:28:231718검색

웹 페이지의 특정 콘텐츠를 캡처하는 웹 크롤러를 만듭니다. 예전에 한 선배 대학원생이 작성했는데 선생님이 너무 오래 걸리고 데이터가 수천 개밖에 안 된다고 생각하셔서 이번에는 타당성 조사를 먼저 해보고 싶다고 하셨습니다. R 언어를 사용하여 통계를 작성하세요.

이 실험에는 두 가지 어려움이 있거나 실제로는 하나만 있는데, 그것이 바로 데이터의 표준화된 표현입니다. 나는 이전에 PHP를 사용하여 파일을 읽고 쓴 적이 없었습니다. 이번이 처음입니다. 고려해야 할 것은 파일 읽기 및 쓰기 빈도입니다. 비록 실험일 뿐이지만 여전히 효율성을 고려해야 합니다. 너무 빈번한 파일 읽기 및 쓰기와 너무 많은 시간이 소요되는 디스크 작업은 큰 문제입니다. 그래서 이것을 고려해야합니다. 실제로 이는 데이터 형식, 어떤 형식으로 저장되는지에 대한 문제입니다. 이후의 R 언어 처리 문제를 고려할 필요가 있습니다. R 언어는 일반 텍스트를 처리할 수 있으며 데이터 사이에 쉼표, 심지어 탭과 같은 구분 기호를 사용할 수 있습니다. 따라서 파일의 데이터는 쉼표로 구분됩니다.

먼저 PHP 코드를 붙여넣으세요.
include ("php_lib/LIB_http.php")
error_reporting(E_ALL^E_NOTICE)
$target ="http ://www.*****";
$ref = "http://www.*****";
$filename = 'sitevisitors.txt';


$first=microtime(get_as_float);
for($n=0;$n<5000;$n++){
$betime=microtime(get_as_float)
$return_arry = http_get_withheader($ target,$ref);
$finidown = microtime(get_as_float);
$resulttime = $finidown - $betime
$count[$n] = $resulttime; [$n]."n";
echo "n".$n;
$fp = fopen("data.txt", "a")//fputs ( $fp, "$count[0]");
for($n=0;$n<5000;$n++){
fputs($fp, "rn".$count[$n]) ;
}
$last=microtime(get_as_float);
$result=$last-$first;
fclose ($fp)
echo "이 테스트 종료"; echo"n 시간은:".$result;
?>

본 사이트 게시가 불편하여 연결 주소와 호스트 주소를 *로 대체하였으니 양해 바랍니다. 프로그램은 먼저 5000개의 요소 배열을 설계한 다음 5000개의 http 요청을 보내고 매번 시간을 기록합니다. http 메시지에 이 시간이 있는 것 같은데 잘 기억이 안나서 microtime() 함수를 사용합니다. 빼기를 하려면 get_as_float 를 추가해야 하고, include("php_lib/LIB_http. php"); 모든 PHP 알림을 차단합니다.

모든 데이터는 data.txt 파일에 기록됩니다. 파일 데이터 형식은 행렬이어야 합니다. 데이터 소스가 하나만 있어도 즉, 각각 하나의 열만 사용합니다. 데이터는 한 줄을 차지하며 연속적으로 쓸 수 없습니다. 예를 들어 1,2,3,4...는 될 수 없지만 다음과 같아야 합니다.
1
2
3
4
...

이렇게 하는 이유는 R 언어 때문입니다. R 언어는 행렬을 읽고 쓰기 때문에 가장 쓰기 편한 방법입니다. 더 좋은 방법일 수도 있지만 모르겠습니다.)

시간을 얻은 후 R 언어 환경을 열고 통계를 수행합니다.
① 데이터 읽기:
data<-read.table("data.txt",header=FALSE, sep=" ,",col.names=c('num'))
② 평균 구하기:
mean(data[,1])
평균(데이터)이 될 수 없습니다. 다음 경고가 나타납니다:
[1] NA
경고 메시지:
mean.default(data): 매개변수가 숫자 값이나 논리 값이 아닙니다: 응답 NA
data[, 1]은 행렬 데이터의 첫 번째 열을 나타냅니다(실제로 여기에는 열이 하나밖에 없지만 이렇게 작성해야 합니다).
③ 산점도를 그리고 싶지만 좌표 정확도가 너무 낮아 구별할 수 없습니다.
c<-data[,1]
mydata<-rbind(c,c )
mydata<-as.data.frame(mydata)
namse(mydata)<-c("x","y")
with(mydata,plot(x,y,pch= 19 ,main="the result"))

그림은 그려지는데 좌표정확도는 소수점 이하 2자리에 불과합니다. 현재 옵션(숫자)을 어떻게 개선할지 연구중입니다. 일하지 않습니다. 생각해 보세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.