 |

23.07.2019, 10:18
|
|
Участник форума
Регистрация: 27.07.2018
Сообщений: 128
С нами:
4103825
Репутация:
18
|
|
Следующий код, вк просто флудит на него запросами о новых сообщениях, видимо не принимает слово Ок, как решить?
PHP:
Код:
type)
{
case 'confirmation':
echo $VK_CONFIRM;
break;
case "message_new":
$userId = $data->object->user_id;
$request_params = array(
'message' => "Ты чето написал, я определил",
'chat_id' => '1',
'access_token' => $VK_TOKEN,
'v' => '5.0'
);
$get_params = http_build_query($request_params);
echo "Ok";
file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
break;
}
?>
|
|
|

23.07.2019, 12:06
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от kotov
видимо не принимает слово Ок
Что это значит?
Если ты делаешь LongPoll запрос, то в коде что-то явно не хватает. Например, первоначального запроса.
У ВК есть PHP SDK. Воспользуйся им.
|
|
|

23.07.2019, 12:11
|
|
Участник форума
Регистрация: 28.02.2018
Сообщений: 247
С нами:
4319646
Репутация:
63
|
|
Сообщение от legend2360
Что это значит?
Если ты делаешь LongPoll запрос, то в коде что-то явно не хватает. Например, первоначального запроса.
У ВК есть PHP SDK. Воспользуйся им.
У него там Callback, можно понять по php://input. В Callback нужно отдавать в ответ "ok", для подтверждения правильной обработки запроса, иначе ВК будет стучаться пока не получит ok.
Сообщение от kotov
Следующий код, вк просто флудит на него запросами о новых сообщениях, видимо не принимает слово Ок, как решить?
PHP:
Измени "Ok" на "ok".
|
|
|

25.07.2019, 15:28
|
|
Постоянный
Регистрация: 25.07.2019
Сообщений: 348
С нами:
3581468
Репутация:
48
|
|
1) У тебя включены возможности выводов всех возможных варнингов на страницу, а не прямиком в логи.
Замени строки:
PHP:
Код:
ini_set
(
'error_resporing'
,
false
)
;
ini_set
(
'display_errors'
,
false
)
;
ini_set
(
'display_startup_errors'
,
false
)
;
2) За счет 1-го пункта твой сервер возвращал Notices/Warnings/Errors, но никак не Ok.
P.S. Там выше написали, что заменить Ok на ok - роли не играет.
3) В PHP быстрее работают массивы с ассоциативными ключами, нежели объекты:
PHP:
Код:
$user_id
=
(
int
)
$data
[
'object'
]
[
'user_id'
]
;
Для этого замени строку на:
PHP:
Код:
$data
=
json_decode
(
file_get_contents
(
"php://input"
)
,
true
)
;
//вторым аргументом в функции json_decode() мы разрешили использовать ассоциативный массив, а не объект
4) Для полной оптимизации, после того, как ты подтвердил ключ (метод confirmation), можешь перед json_decode() вставить следущее:
PHP:
Код:
echo
'ok'
;
fastcgi_finish_request
(
)
;
В таком случае, твой сервер сначала выдаст ответ 'ok' (HTTP 200 OK) и закроект соединение с Callback API, а потом уже начнет обрабатывать запрос. Это лучше тем, что Callback API не будет флудить твоему серверу запросами, если, к примеру, у тебя в скрипте идет перебор больших значений. Дело в том, что у Callback API установлен лимит ожидания ответа на 10 секунд.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|