Време за изчакване на операцията за извиване на 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;

?>

person spongyboss    schedule 19.07.2015    source източник
comment
Препоръчвам ви да прегледате структурата на съобщението си, защото това може да е ваш проблем. Правя същата CURL връзка като вас и нямам проблеми.   -  person eloibm    schedule 21.07.2015


Отговори (1)


Опитах се да изпратя Push известие, използвайки вашия код и го постигнах.

За тестове ви препоръчвам да зададете параметъра "dry_run". Ще изпращате съобщения до GCM и той ще ви ги върне като „фалшив“ отговор.

Сега вашият проблем, потърсих какво може да се случи, защото изглежда, че имате ограничение на къдриците или нещо подобно, но не съм експерт по тази тема, така че ето няколко съвета, които можете да опитате:

  • Ако изпълнявате скрипта през браузър, задайте set_time_limit на нула за безкрайни секунди.

    set_time_limit(0);

  • Увеличете ограничението за време за работа на curl, като използвате тази опция „CURLOPT_TIMEOUT“

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

  • Може да се случи и при безкрайно пренасочване от сървъра. За да спрете това, опитайте да стартирате скрипта с деактивирано проследяване на местоположението.

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

person eloibm    schedule 21.07.2015
comment
Ще опитам това, благодаря.. Аз също не съм експерт по Curl и нямам представа какво се случва, просто следвам инструкциите - person spongyboss; 22.07.2015
comment
Здравейте отново, благодаря за това, опитах го и работи много по-добре! :) - person spongyboss; 28.07.2015