不能长轮询电报
Can't Longpolling Telegram
我无法对 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
所以应该没问题,但是 Telegram return 立即给我发了这样的空结果:
object(stdClass)#2 (2) {
["ok"]=>
bool(true)
["result"]=>
array(0) {
}
}
我做错了什么?据我所知-查询不应该 return me empty result?
PHP 不能 是长轮询客户端。
您有 2 个解决方案:
- 使用无限循环包含正常的
getUpdates
方法。
- 如果您的主机提供商提供 public HTTPS 服务,请使用 Webhook 而不是轮询。
似乎 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.
为 getUpdates
查询添加 POST 属性 timeout > 0
使其成为长轮询。
我知道这是一个老问题,购买也许这可以帮助某人。实际上,对于 ReactPHP,您可以使用 PHP 的长轮询模式。看看this.
我无法对 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
所以应该没问题,但是 Telegram return 立即给我发了这样的空结果:
object(stdClass)#2 (2) {
["ok"]=>
bool(true)
["result"]=>
array(0) {
}
}
我做错了什么?据我所知-查询不应该 return me empty result?
PHP 不能 是长轮询客户端。
您有 2 个解决方案:
- 使用无限循环包含正常的
getUpdates
方法。 - 如果您的主机提供商提供 public HTTPS 服务,请使用 Webhook 而不是轮询。
似乎 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.
为 getUpdates
查询添加 POST 属性 timeout > 0
使其成为长轮询。
我知道这是一个老问题,购买也许这可以帮助某人。实际上,对于 ReactPHP,您可以使用 PHP 的长轮询模式。看看this.