Skip to content

Commit 36295d6

Browse files
committed
To distinguish the APIConnectError request timeout and response timeout difference
1 parent a598953 commit 36295d6

File tree

4 files changed

+30
-19
lines changed

4 files changed

+30
-19
lines changed

examples/PushExample.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,21 @@
3838
echo 'Push Fail.' . $br;
3939
echo 'Http Code : ' . $e->httpCode . $br;
4040
echo 'code : ' . $e->code . $br;
41-
echo 'message : ' . $e->message . $br;
41+
echo 'Error Message : ' . $e->message . $br;
4242
echo 'Response JSON : ' . $e->json . $br;
4343
echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
4444
echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
4545
echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
4646
} catch (APIConnectionException $e) {
47-
echo 'Push Fail.' . $br;
48-
echo 'message' . $e->getMessage() . $br;
47+
echo 'Push Fail: ' . $br;
48+
echo 'Error Message: ' . $e->getMessage() . $br;
49+
//response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
50+
echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
4951
}
5052

5153
echo $br . '-------------' . $br;
5254

55+
5356
//full push
5457
try {
5558
$result = $client->push()
@@ -75,8 +78,10 @@
7578
echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
7679
echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
7780
} catch (APIConnectionException $e) {
78-
echo 'Push Fail.' . $br;
79-
echo 'message' . $e->getMessage() . $br;
81+
echo 'Push Fail: ' . $br;
82+
echo 'Error Message: ' . $e->getMessage() . $br;
83+
//response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
84+
echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
8085
}
8186

8287

@@ -108,6 +113,8 @@
108113
echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
109114
echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
110115
} catch (APIConnectionException $e) {
111-
echo 'Push Fail.' . $br;
112-
echo 'message' . $e->getMessage() . $br;
116+
echo 'Push Fail: ' . $br;
117+
echo 'Error Message: ' . $e->getMessage() . $br;
118+
//response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
119+
echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
113120
}

examples/ReportExample.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
require_once 'vendor/autoload.php';
34

45
use JPush\Model as M;
@@ -22,7 +23,7 @@
2223

2324

2425
try {
25-
$msg_ids = '1931816610,1466786990,1931499836';
26+
$msg_ids = '1150720279,1492401191,1150722083';
2627
$result = $client->report($msg_ids);
2728
foreach($result->received_list as $received) {
2829
echo '---------' . $br;
@@ -34,14 +35,16 @@
3435
echo 'Push Fail.' . $br;
3536
echo 'Http Code : ' . $e->httpCode . $br;
3637
echo 'code : ' . $e->code . $br;
37-
echo 'message : ' . $e->message . $br;
38+
echo 'Error Message : ' . $e->message . $br;
3839
echo 'Response JSON : ' . $e->json . $br;
3940
echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
4041
echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
4142
echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
4243
} catch (APIConnectionException $e) {
43-
echo 'Push Fail.' . $br;
44-
echo 'message' . $e->getMessage() . $br;
44+
echo 'Push Fail: ' . $br;
45+
echo 'Error Message: ' . $e->getMessage() . $br;
46+
//response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
47+
echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
4548
}
4649

4750

src/JPush/Exception/APIConnectionException.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111

1212
class APIConnectionException extends \Exception {
13-
function __construct($message) {
13+
public $isResponseTimeout;
14+
function __construct($message, $isResponseTimeout = false) {
1415
parent::__construct($message);
16+
$this->isResponseTimeout = $isResponseTimeout;
1517
}
1618
}

src/JPush/JPushClient.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
<?php
2-
/**
3-
* Created by PhpStorm.
4-
* User: xiezefan
5-
* Date: 14-6-9
6-
* Time: 下午1:49
7-
*/
82

93
namespace JPush;
104

@@ -21,6 +15,7 @@ class JPushClient {
2115
const REPORT_URL = 'https://report.jpush.cn/v2/received';
2216
const USER_AGENT = 'JPush-API-PHP-Client';
2317
const CONNECT_TIMEOUT = 5;
18+
const READ_TIMEOUT = 30;
2419
const DEFAULT_MAX_RETRY_TIMES = 3;
2520

2621
public $appKey;
@@ -84,14 +79,18 @@ public function request($url, $data, $header, $method='POST') {
8479

8580
$request->addHeaders($header)
8681
->authenticateWith($this->appKey, $this->masterSecret)
87-
->timeout(self::CONNECT_TIMEOUT);
82+
->timeout(self::READ_TIMEOUT);
8883

8984
$response = null;
9085
for ($retryTimes=0;;$retryTimes++) {
9186
try {
9287
$response = $request->send();
9388
break;
9489
} catch (ConnectionErrorException $e) {
90+
if (strpos($e->getMessage(),'28')) {
91+
throw new APIConnectionException("Response timeout. Your request has probably be received by JPUsh Server,please check that whether need to be pushed again.", true);
92+
}
93+
//echo '<br/>';
9594
if ($retryTimes >= $this->retryTimes) {
9695
throw new APIConnectionException("Connect timeout. Please retry later.");
9796
} else {

0 commit comments

Comments
 (0)