2012-01-25 2 views
1

아마도 이것은 간단한 질문이지만 웹에서 대답을 찾지 못했습니다.PHP witout 응답을 보내는 요청을

은 내가

http://www.example.com/do_it.php 

나는 그것을 포함 할 수 없습니다를 열고있을 때 작동하는 원격 스크립트를로드하는 데 시간이 너무 오래 걸릴 수 있으며,이 페이지는 치명적인 오류를 줄 수있는 원인이된다.

PHP에서 가장 쉽고 쉬운 방법으로 해당 페이지를로드해야합니다. 그래서 결과적으로 그것은 단지 헤더를 반환하거나하지 아무것도 반환 스크립트보다 더 많은 시간이 걸릴 것입니다,

는 지금은
$ch = curl_init($url); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,$withReturn); 
$execute = curl_exec($ch); 

을하고 있어요하지만이 스크립트는 응답을 얻을.

이렇게하는 것이 더 좋은 방법입니까?

도움이 될 경우 do_it.php은 내가 전화해야하는 곳과 같은 서버에 있습니다.

+0

질문이 무엇인지 잘 모릅니다. 이미 작동중인 솔루션이있는 것처럼 보입니까? –

+0

예, 작동하지만 성능에 대해 걱정하고 있습니다. 나는 더 나은 해결책이 존재하기를 정말로 바란다. – Narek

답변

2

요청을 실행하고 응답을 기다릴 수있는 가능한 해결책은 php.net/curl_multi_exec를 사용하고 응답을 구문 분석하지 않는 것입니다. 또 다른 접근법은 소켓을 사용하고, 스크립트에 대한 연결을 열고, 요청을 작성한 다음 응답을 준비하지 않고 연결을 닫는 것입니다.

예 컬 스크립트를 https://github.com/vrana/php-async/blob/master/CurlAsync.php

소켓 방법의 사용 예 : 예 위

$fp = fsockopen('example.com', 80, $errno, $errstr, 30); 

$out = "GET /do_it.php HTTP/1.1\r\n"; 
$out.= "Host: example.com\r\n"; 
$out.= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$out.= "Connection: Close\r\n\r\n"; 

fwrite($fp, $out); 
fclose($fp); 

이 안된이며 출발점으로 제공됩니다.

+0

답변 해 주셔서 감사합니다! 'fsockopen '이 얼마나 빨리 작동하는지 확인해야하지만, 논리적으로 그것이 필요한 것입니다! – Narek

+0

문제 없음 Narek 기꺼이 도와 드리겠습니다! –

1

가장 빠른 방법은 모든 방법을 확인하는 것입니다. curl_exec()가

소켓 - -이

CURL이는 fsockopen()가

그리고 당신은 단지 다음, 그 do_it.php 페이지의 응답을 다운로드 get_file_contents을 사용하려면().

+0

'get_file_contents()'는 응답을 얻는 가장 느린 방법이지만, 제 경우에는 응답이 전혀 필요하지 않기 때문에 응답을 얻지 않으려 고하는 방법을 찾아야합니다. – Narek

관련 문제