2013-02-23 3 views
0

내가 얻을 :QueryPath에서 OpenAmplify에 액세스 할 때 HTTP 요청이 실패하거나 시간 초과됩니다. 왜? 내가 WAMP에서 cmd.exe를 [명령 줄]에서이 스크립트를 실행할 때

Could not retrieve data from OpenAmplify.file_get_contents(http://portal 
tnx.openamplify.com/AmplifyWeb/AmplifyThis?apiKey=MY_API_KEY_GOES_HERE): failed to open stream: HTTP request failed! (C:\wamp\www\Learning_Query_Pa 
th\src\QueryPath\QueryPath.php: 4053) 

나는 파이어 폭스 브라우저 [V 19.0] 내가 얻을 통해 로컬 호스트에서이 스크립트를 실행하면 :

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\Learning_Query_Path\src\QueryPath\QueryPath.php on line 4525 

다음은 내가 사용하는 스크립트입니다 :

<?php 

require 'src/QueryPath/QueryPath.php'; 

$url = 'http://portaltnx.openamplify.com/AmplifyWeb/AmplifyThis?'; 
$key = 'I_PUT_MY_API_KEY_HERE'; 
$text = 'I_PUT_TEXT_HERE'; 

$params = array(
    'apiKey' => $key, 
); 

$url .= http_build_query($params); 

$options = array(
    'http' => array(
    'method' => 'POST', 
    'user_agent' => 'QueryPath/2.0', 
    'header' => 'Content-type: application/x-www-form-url-encoded', 
    'content' => http_build_query(array('inputText' => $text)), 
), 
); 

$context = stream_context_create($options); 
try { 
    $qp = qp($url, NULL, array('context' => $context)); 
} 
catch (Exception $e) { 
    print "Could not retrieve data from OpenAmplify." . $e->getMessage(); 
    exit; 
} 

    $qp->find('ProperNouns>TopicResult>Topic>Name')->slice(0, 20); 


$out = qp(QueryPath::HTML_STUB, 'body')->append('<ul/>')->find('ul'); 


foreach ($qp as $name) { 
    $out->append('<li>' . $name->text() . '</li>'); 
} 

$out->writeHTML(); 


?> 

어떻게하면됩니까?

P. Open Amplify는 제공된 텍스트를 분석하여 분석 한 후 그로부터 흥미로운 것들을 많이 돌려주는 웹 서비스입니다. 나는이 작업과 QueryPath의 열렬한 팬을 열망하고 있습니다. 그래서 QueryPath와 함께 작동시키는 방법에 대한 제안에만 관심이 있습니다!

답변

0

시간 제한을 연장하려면 'http'옵션의 'timeout'이름/값 쌍을 사용할 수 있습니다. 예 : 여기 아래에 넣어 :

 
'content' => ... 
'timeout' => 120.0

(참조 : http://www.php.net/manual/en/context.http.php)

내 생각하지만, 뭔가 어긋 것입니다. qp() 대신 file_get_contents()을 사용하여 파일을 가져온 다음이 문자열을 QueryPath에 전달할 수 있습니다. 적어도 그 시점부터 QueryPath가 아닌 네트워크 문제를 디버깅 할 것입니다.

OpenAmplify와 함께 작업 할 때 CURL API 사용에 큰 도움이되었지만 내장 PHP 스트림 래퍼 (참조 : http://www.php.net/manual/en/book.curl.php)보다 약간 복잡합니다. 내가 위의 코드와이 URL을하려고하면

+0

[$ qp ($ url, NULL, array ('context'=> $ context));]와 [$ qp1 = file_get_contents ($ url, false, $ context); $ qp = qp ($ qp1);] 위의 코드에서 얻은 CLI에서 스크립트를 실행합니다. [PHP 경고 : file_get_contents (http://portaltnx.openamplify.com/AmplifyWeb/A mplifyThis? apiKey = MY_API) : 스트림을 열지 못했습니다 : HTTP 요청이 실패했습니다! C : \ Wamp \ www \ Learning_Query_Path \ querypath1.php 43 행 PHP 스택 추적 : PHP 1. {기본} C : \ wamp \ www \ Learning_Query_Path \ querypath1.php : 0 PHP 2. file_get_contents) C : \ wamp \ www \ Learning_Query_Path \ querypath1.php : 43] 계속 ... – codepreneur

+0

[호출 스택 : 0.0006 241600 1. {main}() C : \ wamp \ www \ Learning_Query_Path \ querypath1.p hp : 0 0.0149 1451840 2. 파일 _get_contents() C : \ Wamp \ www \ Learning_Query_Path \ q uerypath1.php : 43 제목 없음

    ] 어떤 제안이? 나는 그것이 내가 피하려고 있었는지 아직 이잖아 배운 havent 한 때문에 컬에 대해 다시 연락 것이지만 나는 그것의 피할 수없는 것 같아요 . – codepreneur

    0

    이 URL을 치십시오. 이게 작동해야합니다 http://portaltnx20.openamplify.com/AmplifyWeb_v21/AmplifyThis

    +0

    , 내가 얻을 : 가 OpenAmplify.file_get_contents에서 데이터를 검색 할 수 없습니다 (http://portaltnx20.openamplify.com/AmplifyWeb_v21/AmplifyThis?apiKey=MY_API_KEY) : 스트림을 열지 못했습니다 : HTTP 요청이 실패했습니다! HTTP/1.1 406 허용되지 않음 (C : \ wamp \ www \ Learning_Query_Path \ src \ QueryPath \ QueryPath.php : 4053) – codepreneur

    +0

    이 URL [Web_v21이 Web_v20으로 변경됨]을 사용하는 경우 다음과 같이 나타납니다. OpenAmplify에서 데이터를 검색 할 수 없습니다. .file_get_contents (http://portaltnx20.openamplify.com/AmplifyWeb_v20/AmplifyThis?apiKey=MY_API_KEY) : 스트림을 열지 못했습니다 : HTTP 요청이 실패했습니다! HTTP/1.0 403 Forbidden (C : \ wamp \ www \ Learning_Query_Path \ src \ QueryPath \ QueryPath.php : 4053) – codepreneur