2017-06-20 133 views
-1

我無法對電報進行LongPolling查詢。Can not Longpolling Telegram

這裏是我的代碼:

$ch = curl_init(); 

(intval($this->offset) !== 0) ? $post_data['offset'] = $this->offset : NULL; 

$options = array(
    CURLOPT_URL    => $this->api_url . $this->method, 
    CURLOPT_HEADER   => false, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_CONNECTTIMEOUT => 0, 
    CURLOPT_TIMEOUT   => 0, 
    CURLOPT_POST   => true, 
    CURLOPT_POSTFIELDS  => $post_data, 
); 

curl_setopt_array($ch, $options); 
$response = json_decode(curl_exec($ch)); 

api_url是正確的,方法是getUpdates所以應該是好的,但電報立即返回我空的結果是這樣的:

object(stdClass)#2 (2) { 
    ["ok"]=> 
    bool(true) 
    ["result"]=> 
    array(0) { 
    } 
} 

我在做什麼錯誤?據我所知 - 查詢不應該返回我的空結果?

回答

1

似乎電報文件在解釋參數超時錯誤。

timeout - Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only. 

添加POST屬性timeout > 0getUpdates查詢,使其長輪詢。

0

PHP CAN NOT是長輪詢客戶端。

你有2個解決方案:

  1. 使用無限循環中含有正常getUpdates方法。
  2. 如果您的主機提供商提供公共HTTPS服務,請使用Webhook而不是輪詢。
+0

它可以。長輪詢技術涉及服務器如何返回結果,您要使用哪種語言來獲取結果並不重要。所以,如果我添加'超時'我的查詢,這將是長時間輪詢,正如我上面寫的。 – admirko

+0

爲什麼它不能用於長時間輪詢? –