You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用Curl调用FCM发送通知长时间无响应问题求助

PHP FCM推送无响应卡住问题排查方案
  • 新增cURL超时配置:你当前代码未设置超时阈值,共享服务器网络波动或出站限制时会导致进程无限挂起。在curl初始化后新增2行配置:
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 连接超时10秒
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 总请求超时30秒
  • 补充cURL错误日志:原有代码未捕获cURL层面的执行错误,无法定位是网络问题还是配置问题。在curl_exec后新增错误判断逻辑:
$result = curl_exec($ch);
if(curl_errno($ch)) {
    echo 'cURL错误:' . curl_error($ch);
}
curl_close($ch);
  • 排查共享服务器出站限制:国内大部分共享服务器默认屏蔽谷歌服务的出站请求,也有部分主机会禁用443端口的非网页出站请求。如果打印的cURL错误为连接超时、无法解析主机等,说明服务器网络无法访问FCM接口,需更换海外服务器或配置可用代理。
  • 校验FCM配置有效性:确认MY SERVER KEY为Firebase控制台「云消息传递」板块下的服务器密钥,而非Web API密钥或其他配置项;USER_TOKEN为客户端主动上报的有效注册令牌,无效令牌只会导致FCM返回错误码,不会引发请求卡住。

修复后完整代码

$msg = array(
    "title" => 'TEST',
    "body" => 'test',
    "icon" => '/setup/favicn.png'
);

$fields = array(
    'to'    => 'USER_TOKEN',
    'data'  => $msg
    // 若需系统通知栏展示,可新增notification字段
    // 'notification' => $msg
);

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

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
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 ) );
// 新增超时配置
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);

$result = curl_exec($ch );
// 打印cURL错误
if(curl_errno($ch)) {
    echo 'cURL执行错误:' . curl_error($ch);
}
curl_close( $ch );

print_r($result);

内容的提问来源于stack exchange,提问作者Moon Monoar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:15:03