我在使用php和android进行推送通知时遇到一些问题。
当我在将其插入数据库后并在对Android应用程序作出响应之前用Android应用程序下达新订单时,我会启动以下服务代码:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, "token=" . config('app.passwords.service_token'));
curl_setopt($curl, CURLOPT_TIMEOUT, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 1);
curl_setopt($curl, CURLOPT_NOSIGNAL, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
$response = curl_exec($curl);
curl_close($curl);
此代码将发送推送通知。
我有卷曲超时问题。在此代码中是1秒。 在大多数情况下,使用curl发送的请求会花费更多时间,因此不会发送push。 如果我们增加超时值,答案将延迟到android应用,问题将出在Android端。
您有什么建议?我该怎么办?
答案 0 :(得分:0)
我建议您增加:
CURLOPT_TIMEOUT > CURLOPT_CONNECTTIMEOUT
因为如果服务器的带宽使用率很高,或者您不在生产服务器上,并且连接速度很低,则连接可能需要花费几秒钟的时间,而当连接成功时,它将尝试发送推送,因此是的