* @since 2.0 */ class Script1minController extends Controller { /** * This command echoes what you have entered as the message. * @param string $message the message to be echoed. * @return int Exit code */ public function actionIndex() { $redis_name = "cxaibc:console:script1min_lock"; try { $get = \Yii::$app->redis->setnx($redis_name, 1); if (empty($get)) { $ttl = \Yii::$app->redis->ttl($redis_name); if ($ttl === -1) { \Yii::$app->redis->expire($redis_name, 60); } var_dump("1分钟脚本正在执行中"); exit(); } \Yii::$app->redis->expire($redis_name, 60 * 10); // 执行体 $this->signingCancel(); // 结束执行 \Yii::$app->redis->del($redis_name); } catch (\Exception $e) { \Yii::$app->redis->del($redis_name); var_dump($e->getMessage()); } echo "1分钟脚本"; exit(); } public function signingCancel() { $signings = Signing::find()->where(['status' => '0'])->all(); foreach ($signings as $item) { $time = time() - $item->create_time; if ($time > 600) { $signing = Signing::findOne($item->id); $signing->status = 4; $signing->reason = '超时未支付'; $signing->save(); } } } }