@@ -12,7 +12,7 @@ class Qiniu_Rio_PutExtra
12
12
public $ Params = null ;
13
13
public $ MimeType = null ;
14
14
public $ ChunkSize = 0 ; // 可选。每次上传的Chunk大小
15
- public $ TryTimes = 0 ; // 可选。尝试次数
15
+ public $ TryTimes = 3 ; // 可选。尝试次数
16
16
public $ Progresses = null ; // 可选。上传进度:[]BlkputRet
17
17
public $ Notify = null ; // 进度通知:func(blkIdx int, blkSize int, ret *BlkputRet)
18
18
public $ NotifyErr = null ; // 错误通知:func(blkIdx int, blkSize int, err error)
@@ -41,7 +41,7 @@ function Qiniu_Rio_Mkblock($self, $host, $reader, $size) // => ($blkputRet, $err
41
41
if (is_resource ($ reader )) {
42
42
$ body = fread ($ reader , $ size );
43
43
if ($ body === false ) {
44
- $ err = Qiniu_NewError (0 , 'fread failed ' );
44
+ $ err = new Qiniu_Error (0 , 'fread failed ' );
45
45
return array (null , $ err );
46
46
}
47
47
} else {
@@ -51,7 +51,7 @@ function Qiniu_Rio_Mkblock($self, $host, $reader, $size) // => ($blkputRet, $err
51
51
}
52
52
}
53
53
if (strlen ($ body ) != $ size ) {
54
- $ err = Qiniu_NewError (0 , 'fread failed: unexpected eof ' );
54
+ $ err = new Qiniu_Error (0 , 'fread failed: unexpected eof ' );
55
55
return array (null , $ err );
56
56
}
57
57
@@ -117,13 +117,30 @@ function Qiniu_Rio_Put($upToken, $key, $body, $fsize, $putExtra) // => ($putRet,
117
117
$ progresses = array ();
118
118
$ uploaded = 0 ;
119
119
while ($ uploaded < $ fsize ) {
120
+ $ tried = 0 ;
121
+ $ tryTimes = ($ putExtra ->TryTimes > 0 ) ? $ putExtra ->TryTimes : 1 ;
122
+ $ blkputRet = null ;
123
+ $ err = null ;
120
124
if ($ fsize < $ uploaded + QINIU_RIO_BLOCK_SIZE ) {
121
125
$ bsize = $ fsize - $ uploaded ;
122
126
} else {
123
127
$ bsize = QINIU_RIO_BLOCK_SIZE ;
124
128
}
125
- list ($ blkputRet , $ err ) = Qiniu_Rio_Mkblock ($ self , $ QINIU_UP_HOST , $ body , $ bsize );
126
- $ host = $ blkputRet ['host ' ];
129
+ while ($ tried < $ tryTimes ) {
130
+ list ($ blkputRet , $ err ) = Qiniu_Rio_Mkblock ($ self , $ QINIU_UP_HOST , $ body , $ bsize );
131
+ if ($ err === null ) {
132
+ break ;
133
+ }
134
+ $ tried += 1 ;
135
+ continue ;
136
+ }
137
+ if ($ err !== null ) {
138
+ return array (null , $ err );
139
+ }
140
+ if ($ blkputRet === null ) {
141
+ $ err = new Qiniu_Error (0 , "rio: uploaded without ret " );
142
+ return array (null , $ err );
143
+ }
127
144
$ uploaded += $ bsize ;
128
145
$ progresses []= $ blkputRet ;
129
146
}
@@ -136,7 +153,7 @@ function Qiniu_Rio_PutFile($upToken, $key, $localFile, $putExtra) // => ($putRet
136
153
{
137
154
$ fp = fopen ($ localFile , 'rb ' );
138
155
if ($ fp === false ) {
139
- $ err = Qiniu_NewError (0 , 'fopen failed ' );
156
+ $ err = new Qiniu_Error (0 , 'fopen failed ' );
140
157
return array (null , $ err );
141
158
}
142
159
0 commit comments