2011-01-10 6 views
2

PHP에서 YQL을 사용하여 file_get_contents를 사용하여 쿼리를 보냅니다. 검색어 추출에 YQL을 사용하여 쿼리에 많은 양의 텍스트가 포함되어 있습니다. 불행하게도 URL을 너무 길게 렌더링하고 오류를 반환합니다. 훨씬 적은 양의 텍스트를 사용하면 잘 작동합니다.PHP/YQL/GET : URL이 너무 깁니다.

GQL을 사용하여 YQL에서 SELECT 문을 사용할 수있는 유일한 방법은 무엇입니까? 더 적은 양의 텍스트를 사용하는 것 외에 다른 옵션은 있습니까?

+0

게시물에 컬을 사용해보십시오. stream과 file_get_contents? – ajreal

+0

POST 요청을 대신 사용해 보셨습니까? – Thai

답변

1

내가 GET와 YQL에 SELECT 문을 사용할 수있는 유일한 방법이며, 어떤 다른 옵션은 텍스트의 적은 양을 사용하는 외에 내가해야합니까?

다른 사람들처럼 GET 대신 POST 요청을 사용할 수 있습니다. 아래는 file_get_contents()을 스트림 컨텍스트와 함께 사용하는 예입니다. cURL 또는 POST 요청을 발행 할 수있는 다른 원격 콘텐츠 가져 오기 코드도 정상적으로 작동합니다.

$ctx = stream_context_create(array('http' => array(
    'method' => 'POST', 
    'header' => 'Content-Type: application/x-www-form-urlencoded', 
    'content' => http_build_query(array(
     'context' => $my_really_really_huge_context, 
     'query' => $query, 
     'format' => 'json', 
     'q'  => 'SELECT * FROM search.termextract WHERE [email protected] and [email protected]' 
    )) 
))); 

$json = file_get_contents('http://query.yahooapis.com/v1/public/yql', false, $ctx); 
0

get 변수를 사용하여 쿼리하는 대신 CURL을 사용하지 않는 이유는 무엇입니까?

$c = curl_init("http:/query.yahooapis.com/v1/public/yql?q=myverylongquery&format=json"); 
curl_setopt($c, CURLOPT_RETURNTRANSFERT, 1); // returns the data into the variable 
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 20); // query times out after 20 seconds 

$data = json_decode(curl_exec($c)); // I asked for data format to be in json in the query 
curl_close($c); 
관련 문제