ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   VkAPi (https://forum.antichat.xyz/showthread.php?t=1338286)

kotov 23.07.2019 10: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;
    }
?>


itsLegend 23.07.2019 12:06

Цитата:

Сообщение от kotov

видимо не принимает слово Ок

Что это значит?

Если ты делаешь LongPoll запрос, то в коде что-то явно не хватает. Например, первоначального запроса.

У ВК есть PHP SDK. Воспользуйся им.

xISRAPILx 23.07.2019 12:11

Цитата:

Сообщение от legend2360

Что это значит?
Если ты делаешь LongPoll запрос, то в коде что-то явно не хватает. Например, первоначального запроса.
У ВК есть PHP SDK. Воспользуйся им.

У него там Callback, можно понять по php://input. В Callback нужно отдавать в ответ "ok", для подтверждения правильной обработки запроса, иначе ВК будет стучаться пока не получит ok.

Цитата:

Сообщение от kotov

Следующий код, вк просто флудит на него запросами о новых сообщениях, видимо не принимает слово Ок, как решить?

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 секунд.


Время: 14:45