* @since 2.0 */ class Script10minController 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:script10min_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("10分钟脚本正在执行中"); exit(); } \Yii::$app->redis->expire($redis_name,60*10); // 执行体、 $this->shopOrderYopoint(); // 结束执行 \Yii::$app->redis->del($redis_name); }catch (\Exception $e){ \Yii::$app->redis->del($redis_name); var_dump($e->getMessage()); } echo "10分钟脚本"; exit(); } /** * @ 商品订单未执行进入执行体 */ public function shopOrderYopoint(){ $redis_name = "cxgyc:YopointNotify:list"; // 获取未执行订单 $select = Order::find()->andWhere([ 'plugin_sign' => 'goods', 'is_delete' => 1, ])->select('yopoint_order')->column(); if(empty($select)){ return false; } $len = \Yii::$app->redis->LLEN($redis_name); $get = []; if(!empty($len)){ $get = \Yii::$app->redis->LRANGE($redis_name,0,$len); } foreach ($select as $key=>$val){ if(!empty($get) && in_array($val,$get)){ continue; } // 插入 \Yii::$app->redis->lpush($redis_name,$val); } var_dump($select); } }