where(['send_result' => "0"])->limit(20)->groupBy('transfer_number')->orderBy('id')->asArray()->all(); if (empty($model)) { echo date('Y-m-d H:i:s') . '暂无跨链交易计划' . PHP_EOL; return 0; } foreach ($model as $val) { // go(function () use ($val) { // \Co::sleep(0.5); $node_params = $val['transfer_url']; $node_params = explode(':', $node_params); $node_params = [ 'scheme' => $node_params[0], 'host' => str_replace('//', '', $node_params[1]), 'port' => $node_params[2] ]; $service = new Chain33Service($node_params); $sign_str = $val['txhex']; $result = $service->sendTransaction($sign_str); if (0 != $result['code']) { $msg = $result['msg']; goto doEnd; } $send_result = $result['result']; doEnd : $currentModel = CoinCrossChain::findOne($val['id']); if (isset($msg)) { $currentModel->msg = $msg; } if (isset($send_result)) { $currentModel->send_result = $send_result; } $currentModel->save(); // }); } return 0; } public function actionQueryTransaction() { $model = CoinCrossChain::find()->where(['<>', 'send_result', '0'])->limit(20)->asArray()->all(); if (empty($model)) { echo date('Y-m-d H:i:s') . '暂无跨链交易计划' . PHP_EOL; return 0; } foreach ($model as $val) { $node_params = $val['transfer_url']; $node_params = explode(':', $node_params); $node_params = [ 'scheme' => $node_params[0], 'host' => str_replace('//', '', $node_params[1]), 'port' => $node_params[2] ]; $service = new Chain33Service($node_params); $send_result = $val['send_result']; $result = $service->QueryTransaction($send_result); if (isset($result['result']['actionName']) && 'unknown' == $result['result']['actionName']) { $query_result = 'success'; $msg = 'success'; } else if (isset($result['result']['receipt']['ty']) && 2 == $result['result']['receipt']['ty']) { $query_result = 'success'; $msg = 'success'; } else { $query_result = 'fail'; $msg = $result['result']['receipt']['logs'][0]['log']; } $currentModel = CoinCrossChain::findOne($val['id']); $currentModel->query_result = $query_result; $currentModel->msg = $msg; $currentModel->save(); } } }