GCM卷曲操作超时

时间:2015-07-19 15:11:04

标签: php android curl google-cloud-messaging php-curl

我有几个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;

?>

1 个答案:

答案 0 :(得分:1)

我尝试使用您的代码发送推送通知,我已经实现了它。

  

对于测试,我建议您设置“dry_run”参数。您将向GCM发送消息,并将其作为“假”响应返回给您。

现在你的问题,我已经搜索了可能发生的事情,因为看起来你有一个卷曲限制或者其他东西,但我不是这个主题的专家,所以这里有一些你可以尝试的提示:

  • 如果您通过浏览器运行脚本,则将set_time_limit设置为零无限秒。

    set_time_limit(0);

  • 使用此选项'CURLOPT_TIMEOUT'

    增加curl的操作时间限制

    curl_setopt($ch, CURLOPT_TIMEOUT, 20); // 20秒

  • 从服务器进行无限重定向也会发生这种情况。要暂停此操作,请尝试在禁用后续位置的情况下运行脚本。

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);