is_array($itemid) or msg('请选择' . $MOD['name']); foreach ($itemid as $v) { $do->update($v); } dmsg('更新成功', $forward); break; case 'tohtml': is_array($itemid) or msg('请选择' . $MOD['name']); foreach ($itemid as $itemid) { tohtml('show', $module); } dmsg('生成成功', $forward); break; case 'delete': $itemid or msg('请选择' . $MOD['name']); isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid); dmsg('删除成功', $forward); break; case 'restore': $itemid or msg('请选择' . $MOD['name']); $do->restore($itemid); dmsg('还原成功', $forward); break; case 'refresh': $itemid or msg('请选择' . $MOD['name']); $do->refresh($itemid); dmsg('刷新成功', $forward); break; case 'clear': $do->clear(); dmsg('清空成功', $forward);
// handle job flags if (tool::securePost('privatejob') == "1") { $saveflags += JOB_FLAG_PRIVATE; } $jobInst->flags = $saveflags; $jobId = $jobInst->start(); $jobInst->activate($jobId); } elseif (tool::securePost('action') == "deleteattach") { $attachment = new attachment(tool::securePost('id')); $attachment->delete(); // we need to reload the task to clear the attachment member in this object $taskInst->activate($taskInst->id); } if (tool::securePost('action') == "delete") { $jobInst->activate(tool::securePost('id')); $jobInst->delete(); } if (tool::securePost('action') == "edit") { $status = 1; $jobInst->activate(tool::securePost('id')); } ####################################################################### ## show task details ?> <h1><?php echo $lang['tasks_taskdetails']; ?> </h1> <div align="center"> <table border="0" cellpadding="2" cellspacing="1" width="96%">
/** * Message Queue Listener + Process task * @param job $job Laravel job object * @param object $message message detail (contains task id) */ public function fire($job, $message) { $id = intval($message['id']); $batch = Batch::find($id); if ($batch->cancel) { $job->delete(); $batch->setStatus('canceled'); return; } $batch->setStatus('running'); $batch->stampBeginExecDatetime(); $rscriptCommand = Config::get('r.rscript'); $rAppPath = base_path() . "/rscripts/app.R batch_controller.R"; $execCommand = $rscriptCommand . " " . $rAppPath . " " . $id; $process = new Process($execCommand); $process->start(); while ($process->isRunning()) { usleep(200000); if (Batch::isCanceled($id)) { // Kill Process $process->stop(3, SIGINT); $batch->setStatus('canceled'); $batch->stampFinishDatetime(); $job->delete(); return; } } $output = $process->getOutput(); # get new status after exec R file $batch = Batch::find($id); $batch->stampFinishDatetime(); # write to logfile $logfile = fopen(base_path() . '/public/batchreport/' . $batch->id . ".log", "w+"); fwrite($logfile, $output); fclose($logfile); # Check if task if finish running if ($batch->status != "success") { $batch->setStatus('fail'); } try { $job->delete(); } catch (\Exception $e) { } }