Просмотр полной версии : VkAPi
Следующий код, вк просто флудит на него запросами о новых сообщениях, видимо не принимает слово Ок, как решить?
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;
}
?>
itsLegend
23.07.2019, 12:06
видимо не принимает слово Ок
Что это значит?
Если ты делаешь LongPoll запрос, то в коде что-то явно не хватает. Например, первоначального запроса.
У ВК есть PHP SDK. Воспользуйся им.
xISRAPILx
23.07.2019, 12:11
Что это значит?
Если ты делаешь LongPoll запрос, то в коде что-то явно не хватает. Например, первоначального запроса.
У ВК есть PHP SDK. Воспользуйся им.
У него там Callback, можно понять по php://input. В Callback нужно отдавать в ответ "ok", для подтверждения правильной обработки запроса, иначе ВК будет стучаться пока не получит ok.
Следующий код, вк просто флудит на него запросами о новых сообщениях, видимо не принимает слово Ок, как решить?
PHP:
Измени "Ok" на "ok".
альбертио представляет
25.07.2019, 15:28
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 секунд.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot