不能Longpolling电报

时间:2017-06-20 10:06:26

标签: php curl telegram

我无法对Telegram进行LongPolling查询。

这是我的代码:

$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所以应该没问题,但Telegram会立即返回我,结果如下:

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

我做错了什么?据我所知 - 查询不应该返回空结果?

3 个答案:

答案 0 :(得分:1)

似乎Telegram文档在论证超时的贬值中存在误解。

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.

timeout > 0查询添加 POST 属性getUpdates,以使其进行长轮询。

答案 1 :(得分:0)

PHP CAN NOT 是长轮询客户端。

你有2个解决方案:

  1. 使用无限循环包含正常getUpdates方法。
  2. 如果您的主机提供商提供公共HTTPS服务,请使用Webhook而不是轮询。

答案 2 :(得分:0)

我知道这是一个老问题,购买也许可以帮助某人。实际上,在ReactPHP中,您可以在PHP中使用长轮询模式。看看this