에는 브라우저에서 실행중인 몇 가지 사용자 정의 PHP 스크립트가 있습니다. 스크립트는 주어진 URL을 스크랩하고 브라우저 또는 엑셀 파일로 테이블 형식으로 데이터를 반환합니다. . (선택 사항)서로 다른 간격으로 마스터 스크립트에서 여러 PHP 스크립트를 실행하십시오.
스크립트에 3 개 이상의 URL을 추가 할 때마다 네트워크 연결 오류 (피어에 의한 연결 재설정)가 발생하는 데는 여러 가지 이유가있을 수 있습니다. 그런 다음 데이터가 테이블에 의해 반환 된 경우 결과가 잘리고 Excel 파일에서 다운로드 파일이 특정 지점에서 중지됩니다 "네트워크 오류"
스크립트는 내 로컬 컴퓨터 (XAMPP)에서 실행 중이며 테스트를 거쳤습니다 여러 라이브 서버와 동일한 문제가 발생했지만 라이브 서버에서는 연결이 오래 지속되는 것으로 나타났습니다. 호스팅 제공 업체로부터 많은 메모리 (+ 1GB RAM)를 사용하면서 스크립트가 더 이상 서버에서 실행되어서는 안되며 속도가 느려지므로 경고합니다. 내 localhost에서 테스트를 재개한다고 가정합니다.
질문 :
오류 "피어 다시 연결"을 방지 할 수있는 구성/조언이 있습니까?
나는 주 단위로 다룰 80 개 이상의 URL (동일한 도메인)을 가지고 있습니다. 스크립트를 80 개의 스크립트 (각각 1 개의 URL)로 분할하고 각각을 독립적으로 실행하십시오. 별로 실용적이지는 않지만, 좋은 방법은 무엇입니까/60 초의 시간 간격으로 마스터 스크립트에서 다른 스크립트를 차례로 실행하는 PHP 스크립트입니까?
다음
나는 URL을 입력 한 코드 조각 :
- 로컬 호스트 :
<?php //to do link $OutPut_Excel = $_GET['xls'];// 0 web page or 1 output excel $show_Name = $_GET['show'];// 0 or 1 $urls = "http://www.URL1.com; http://www.URL2.com; http://www.URL3.com; http://www.URL4.com; http://www.URL5.com; http://www.URL6.com; http://www.URL7.com "; //output excel if($OutPut_Excel == "1") { header("Content-Type: application/vnd.ms-execl;charset=iso-8859-1"); header("Content-Disposition: attachment; filename=data.xls"); header("Pragma: no-cache"); header("Expires: 0"); } set_time_limit(0); ini_set('memory_limit', '-1'); ini_set('display_errors',true); //output html if($OutPut_Excel == "0") { ?> <html> <head> title>scraper</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php } if($OutPut_Excel == "0") { if($show_Name) { $nametext = '<td>Name</td>'; } echo "<table border='1'><tr><td>Name</td><td>Code</td> <td>City</td><td>Address</td><td>E-mail</td><td>Phone/td> <td>Url</td>$nametext</tr>";
ECT는 ......
스크립트로 실행되는 경우 /scraper.php?xls=0 & show = 1 | 브라우저의 데이터 표시
- localhost/scraper.php? xls = 1 & show = 1 | Excel 파일로 다운로드 한 데이터
데이터가 연결 오류로 잘리지 않는 한 어떤 방법으로도 문제가 없습니다.
나는 초심자이고 PHP를 독자적으로 배우는 동안 해결책을 찾는데 도움을 주시면 감사하겠습니다. 잘 부탁드립니다
, 주권 두 번째 질문에 대해서는
1GB RAM? 변수를 올바르게 관리하고 있습니까? 어쨌든 스크립트가 사용할 수있는 RAM의 양을 제한하는 php.ini의 설정 매개 변수가 있습니다. 실행 시간에 또 다른 것이 있습니다. 나는 그것이 당신의 대본을 멈추게하는 것이라고 생각합니다. – Naryl
감사합니다 Naryl, 나는 그것을 봐야 할 것입니다 –
나는 실행 시간과 메모리 제한을 변경했지만 여전히 같은 문제가 있습니다. 호스팅 서버에서 연결을 재설정하십시오. 모든 스크립트를 차례로 실행하라는 힌트가 있습니까? –