Тайм-аут операции скручивания GCM

У меня есть несколько php-файлов, отвечающих за операции GCM, которые хранятся на моем сервере, они, кажется, работают нормально, когда хотят, но часто возвращают ошибку, которая гласит:

Ошибка скручивания: время ожидания истекло через 0 миллисекунд с 0 из 0
байт получено

Это проблема с сервером или проблема с моим кодом GCM? Ниже мой php файл:

<?php

$message = urldecode($_POST['message']);
$order = urldecode($_POST['order']);
$registrationIDs = urldecode($_POST['registrationIDs']);
$apiKey = "API_KEY";
$tableID = urldecode($_POST['tableID']);

$url = 'https://android.googleapis.com/gcm/send';

$fields = array(
'registration_ids' => array($registrationIDs),
'data' => array(
'message' => $message,
'tableID' => $tableID,
'order' => $order
),
);

$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);

// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));



// Execute post
$result = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}

// Close connection
curl_close($ch);

echo $result;

?>

4

Решение

Я попытался отправить Push-уведомление, используя ваш код, и я добился этого.

Для тестов я рекомендую установить параметр «dry_run». Вы будете отправлять сообщения в GCM, и он будет возвращать их вам как «фальшивый» ответ.

Теперь ваша проблема, я искал, что может произойти, потому что кажется, что у вас есть ограничение скручивания или что-то, но я не эксперт в этой теме, поэтому вот несколько советов, которые вы можете попробовать:

  • Если вы запускаете скрипт через браузер, то установите set_time_limit на ноль в течение бесконечных секунд.

    set_time_limit(0);

  • Увеличьте лимит времени работы локона, используя эту опцию ‘CURLOPT_TIMEOUT’

    curl_setopt($ch, CURLOPT_TIMEOUT, 20); // 20 секунд

  • Это также может произойти для бесконечного перенаправления с сервера. Чтобы остановить это, попробуйте запустить скрипт с отключенным отслеживанием местоположения.

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]