2013-06-24 1 views
0

짧은 시간에 외부 XML 파일을 검사하여 문제를 해결해야합니다. 만약 내가 함수 if (fopen($sxml[$looppocet], "r"))을 사용하고 있고 더 많은 XML 파일 forexample 15를 가지고있다. 그래서 이것은 매우 오랜 시간이 걸리고 config 실행 시간이 필요하지만 이것은 매우 나쁘다. 이 파일이 존재하면 하나의 파일을 확인한 다음 내 사이클을 계속 진행하십시오. 그렇지 않으면 내 오류를 인쇄하고 다음 단계로 넘어가십시오.짧은 시간에 외부 XML이 존재하는지 확인하십시오.

이 문제를 어떻게 해결할 수 있습니까?

+0

['is_file()'(http://www.php.net/manual/en/function .is-file.php)/['file_exists()']] (http://www.php.net/manual/en/function.file-exists.php)? – Passerby

+0

파일/exists()는 로컬 파일에만 사용되지만 외부 파일 (예 : http : //domain/fresh.xml) – Blooder

+0

을 검사해야합니다. 외부 서버를 수정할 수 없다면 "짧은 시간 "솔루션을 로컬로 사용하면 어떤 병목 방법을 사용해도 외부 서버와 통신하는 데 소요되는 시간이 주요 병목 현상이라고 생각합니다. – Passerby

답변

0

내 솔루션은 ...이 기능을 사용하여 외부 장치에서 ping을 확인했습니다.

function icmpChecksum($data){ 
if (strlen($data)%2) 
$data .= "\x00"; 

$bit = unpack('n*', $data); 
$sum = array_sum($bit); 

while ($sum >> 16) 
$sum = ($sum >> 16) + ($sum & 0xffff); 

return pack('n*', ~$sum); 
} 
// Making the package 
$type= "\x08"; 
$code= "\x00"; 
$checksum= "\x00\x00"; 
$identifier = "\x00\x00"; 
$seqNumber = "\x00\x00"; 
$data= "Scarface"; 
$package = $type.$code.$checksum.$identifier.$seqNumber.$data; 
$checksum = icmpChecksum($package); // Calculate the checksum 
$package = $type.$code.$checksum.$identifier.$seqNumber.$data; 
// And off to the sockets 
$socket = socket_create(AF_INET, SOCK_RAW, 1); 
socket_set_option ($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>1, "usec"=>0)); 
socket_connect($socket, 192.168.0.1, null); 
$startTime = microtime(true); 
socket_send($socket, $package, strLen($package), 0); 
if (false === (@socket_read($socket, 255))) {  
      echo "Harddware is OFF--->"; 
    } else { 
      echo "Harddware is ON--->"; 
      } 

그 날 :)에 대한 불안정 총이었다 그래서 임 쉘 기능으로 고전 핑 (ping)을 사용하는 경우

관련 문제