Сегодня поговорим о построении отказоустойчивой системы обращений к апи разных ресурсов напрямую. Это может быть апи для бота телеги, или ресурсы гугла в китае. Сразу отмечу, что в любом случае использования системы нотификаций - хорошо бы в случае возможного сбоя с обращениями к внешнему сайту - перейти на очереди, дабы не ломать логику ваших отправок сообщений таймаутами. Но статья о другом.
Сделать себе проксю можно посредством облачного шаред хостинга стоимостью от 9 руб в месяц.
Бюджетное решение, пока вы не готовы ставить себе очереди. Поскольку блокировки в стране, где вы поставите проксю нету - задержка в отправке будут минимальная (двойной пинг, не больше) и вы можете быть уверены в ее работоспособности. Можете даже установить таймаут в 1 секунду для отправки запроса, чтобы не подвесить свои скрипты по таймауту
Вам просто надо передать все параметры, которые вы сдавали в апи телеграмма - стороннему хосту с обработкой его responce.
Скрипт может выглядеть так:
<?php
$url = $_POST['url'];
$post=$_POST['post'];
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_REFERER, $url);
if ($post){
curl_setopt($c, CURLOPT_POST, 1);
if (is_array($post)){
curl_setopt($c, CURLOPT_POSTFIELDS, http_build_query($post));
}else{
curl_setopt($c, CURLOPT_POSTFIELDS, $post);
}
}
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla Firefox 3 (compatible; MSIE 6.0; LAS Linux)');
$rs = curl_exec($c);
if ($rs===false)throw new \Exception(curl_error($c));
curl_close($c);
echo $rs;
Для обращения к данному скрипту - нужно указать новый хост и в посте кидать все нужные параметры.
Если вы используете какой-либо официальный класс, или свой - вам нужно будет минимально подкрутить обращения в методе, который отправляет curl запрос
P.s такой метод можно применять для обхода любого недоступного обращения и к другим апихам, если таковые есть или будут