3
3
namespace App \Http \Controllers \Api ;
4
4
5
5
use App \Events \ApiExcelEvent ;
6
+ use App \Events \ApiExcelSwooleEvent ;
6
7
use App \Http \Repository \ApiRepository ;
7
8
use App \Http \Repository \ExcelRepository ;
8
9
use App \Http \Requests \ApiExcel \Store ;
9
10
use App \Http \Requests \ApiExcel \Update ;
10
11
use App \Models \ApiExcel ;
11
12
use App \Http \Controllers \Controller ;
13
+ use Hhxsv5 \LaravelS \Swoole \Task \Event ;
12
14
use Illuminate \Http \Request ;
13
15
use Illuminate \Support \Facades \Storage ;
14
16
@@ -131,15 +133,33 @@ public function startTask()
131
133
if (!$ task || $ task ['state ' ] != 0 ) {
132
134
return $ this ->out (4007 );
133
135
}
134
- $ task -> state = 1 ;
136
+
135
137
// 3. 更新表字段状态
136
- $ task ->save () ;
138
+ $ task ->state = 1 ;
137
139
138
140
// 4. 写入事件中处理
139
- $ task = $ task ->toArray ();
140
- event (new ApiExcelEvent ($ task ));
141
+ $ data = $ task ->toArray ();
142
+
143
+ // 如果是 cli 模式使用 laravels Task 异步事件
144
+ if (substr (PHP_SAPI , 0 , 3 ) == 'cli ' ) {
145
+ // 触发事件--实例化并通过fire触发,此操作是异步的,触发后立即返回,由Task进程继续处理监听器中的handle逻辑
146
+ $ event = new ApiExcelSwooleEvent ($ data );
147
+ // $event = new TestEvent('event data');
148
+ // $event->delay(10); // 延迟10秒触发
149
+ $ event ->setTries (2 ); // 出现异常时,累计尝试3次
150
+ $ success = Event::fire ($ event );
151
+ // var_dump($success);// 判断是否触发成功
152
+ } else {
153
+ $ success = event (new ApiExcelEvent ($ data ));
154
+ }
155
+ $ code = 200 ;
156
+ if (!$ success ) {
157
+ $ code = 5000 ;
158
+ $ task ->state = 0 ;
159
+ }
160
+ $ task ->save ();
141
161
142
- return $ this ->out (200 , [], '任务加入成功,请稍后下载处理结果 ' );
162
+ return $ this ->out ($ code , [], '任务加入成功,请稍后下载处理结果 ' );
143
163
}
144
164
145
165
/**
@@ -191,7 +211,7 @@ public function show(ApiExcel $apiExcel)
191
211
* Show the form for editing the specified resource.
192
212
* 编辑展示数据
193
213
*
194
- * @param int $id
214
+ * @param int $id
195
215
*
196
216
* @return \Illuminate\Http\Response
197
217
*/
@@ -205,8 +225,8 @@ public function edit($id)
205
225
* Update the specified resource in storage.
206
226
* 更新数据
207
227
*
208
- * @param Update $request
209
- * @param int $id
228
+ * @param Update $request
229
+ * @param int $id
210
230
* @return \Illuminate\Http\Response
211
231
*/
212
232
public function update (Update $ request , $ id )
@@ -226,7 +246,7 @@ public function update(Update $request, $id)
226
246
/**
227
247
* Remove the specified resource from storage.
228
248
*
229
- * @param int $id
249
+ * @param int $id
230
250
* @return \Illuminate\Http\Response
231
251
*/
232
252
public function destroy ($ id )
@@ -269,7 +289,7 @@ public function forceDelete($id)
269
289
270
290
/**
271
291
* 下载已完成数据
272
- *
292
+ *
273
293
* @return \Illuminate\Http\Response
274
294
*/
275
295
public function downloadLog ()
0 commit comments