Просмотр исходного кода

使用队列异步发邮件(本次更新必须导入sql,并执行 sh queue.sh,然后修改.env 文件中的queue_driver为database或者redis)

bingo 7 лет назад
Родитель
Сommit
4a26e4c586

+ 2 - 2
app/Console/Commands/AutoClearLog.php

@@ -52,8 +52,8 @@ class AutoClearLog extends Command
         // 自动清除1小时以前的节点在线用户数日志
         SsNodeOnlineLog::query()->where('log_time', '<=', strtotime("-1 hour"))->delete();
 
-        // 自动清除1个月以前的用户流量日志
-        UserTrafficLog::query()->where('log_time', '<=', strtotime("-1 month"))->delete();
+        // 自动清除7天以前的用户流量日志
+        UserTrafficLog::query()->where('log_time', '<=', strtotime("-7 days"))->delete();
 
         // 自动清除10天以前的用户每小时流量数据日志
         UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();

+ 1 - 1
app/Mail/activeUser.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class activeUser extends Mailable
+class activeUser extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/closeTicket.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class closeTicket extends Mailable
+class closeTicket extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/newTicket.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class newTicket extends Mailable
+class newTicket extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/nodeCrashWarning.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class nodeCrashWarning extends Mailable
+class nodeCrashWarning extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/replyTicket.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class replyTicket extends Mailable
+class replyTicket extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/resetPassword.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class resetPassword extends Mailable
+class resetPassword extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/sendUserInfo.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class sendUserInfo extends Mailable
+class sendUserInfo extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/sendVerifyCode.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class sendVerifyCode extends Mailable
+class sendVerifyCode extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/userExpireWarning.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class userExpireWarning extends Mailable
+class userExpireWarning extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/userExpireWarningToday.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class userExpireWarningToday extends Mailable
+class userExpireWarningToday extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 1 - 1
app/Mail/userTrafficWarning.php

@@ -7,7 +7,7 @@ use Illuminate\Mail\Mailable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Contracts\Queue\ShouldQueue;
 
-class userTrafficWarning extends Mailable
+class userTrafficWarning extends Mailable implements ShouldQueue
 {
     use Queueable, SerializesModels;
 

+ 0 - 35
database/migrations/2014_10_12_000000_create_users_table.php

@@ -1,35 +0,0 @@
-<?php
-
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Database\Migrations\Migration;
-
-class CreateUsersTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('users', function (Blueprint $table) {
-            $table->increments('id');
-            $table->string('name');
-            $table->string('email')->unique();
-            $table->string('password');
-            $table->rememberToken();
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('users');
-    }
-}

+ 0 - 32
database/migrations/2014_10_12_100000_create_password_resets_table.php

@@ -1,32 +0,0 @@
-<?php
-
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Database\Migrations\Migration;
-
-class CreatePasswordResetsTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('password_resets', function (Blueprint $table) {
-            $table->string('email')->index();
-            $table->string('token');
-            $table->timestamp('created_at')->nullable();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('password_resets');
-    }
-}

+ 0 - 102
database/migrations/2019_01_17_100504_create_permission_tables.php

@@ -1,102 +0,0 @@
-<?php
-
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Database\Migrations\Migration;
-
-class CreatePermissionTables extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        $tableNames = config('permission.table_names');
-        $columnNames = config('permission.column_names');
-
-        Schema::create($tableNames['permissions'], function (Blueprint $table) {
-            $table->increments('id');
-            $table->string('name');
-            $table->string('guard_name');
-            $table->timestamps();
-        });
-
-        Schema::create($tableNames['roles'], function (Blueprint $table) {
-            $table->increments('id');
-            $table->string('name');
-            $table->string('guard_name');
-            $table->timestamps();
-        });
-
-        Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
-            $table->unsignedInteger('permission_id');
-
-            $table->string('model_type');
-            $table->unsignedBigInteger($columnNames['model_morph_key']);
-            $table->index([$columnNames['model_morph_key'], 'model_type', ]);
-
-            $table->foreign('permission_id')
-                ->references('id')
-                ->on($tableNames['permissions'])
-                ->onDelete('cascade');
-
-            $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
-                    'model_has_permissions_permission_model_type_primary');
-        });
-
-        Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
-            $table->unsignedInteger('role_id');
-
-            $table->string('model_type');
-            $table->unsignedBigInteger($columnNames['model_morph_key']);
-            $table->index([$columnNames['model_morph_key'], 'model_type', ]);
-
-            $table->foreign('role_id')
-                ->references('id')
-                ->on($tableNames['roles'])
-                ->onDelete('cascade');
-
-            $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
-                    'model_has_roles_role_model_type_primary');
-        });
-
-        Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
-            $table->unsignedInteger('permission_id');
-            $table->unsignedInteger('role_id');
-
-            $table->foreign('permission_id')
-                ->references('id')
-                ->on($tableNames['permissions'])
-                ->onDelete('cascade');
-
-            $table->foreign('role_id')
-                ->references('id')
-                ->on($tableNames['roles'])
-                ->onDelete('cascade');
-
-            $table->primary(['permission_id', 'role_id']);
-            
-            app('cache')
-                ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
-                ->forget(config('permission.cache.key'));
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        $tableNames = config('permission.table_names');
-
-        Schema::drop($tableNames['role_has_permissions']);
-        Schema::drop($tableNames['model_has_roles']);
-        Schema::drop($tableNames['model_has_permissions']);
-        Schema::drop($tableNames['roles']);
-        Schema::drop($tableNames['permissions']);
-    }
-}

+ 2 - 0
queue.sh

@@ -0,0 +1,2 @@
+#!/bin/bash
+nohup php artisan queue:work database --queue=default --timeout=60 --sleep=5 --tries=3 >> ./storage/logs/queue.log 2>&1 &

+ 52 - 4
sql/db.sql

@@ -833,6 +833,12 @@ INSERT INTO `sensitive_words` (`words`) VALUES ('trashymail.com');
 INSERT INTO `sensitive_words` (`words`) VALUES ('tempemail.net');
 INSERT INTO `sensitive_words` (`words`) VALUES ('slopsbox.com');
 INSERT INTO `sensitive_words` (`words`) VALUES ('mailnesia.com');
+INSERT INTO `sensitive_words` (`words`) VALUES ('ezehe.com');
+INSERT INTO `sensitive_words` (`words`) VALUES ('tempail.com');
+INSERT INTO `sensitive_words` (`words`) VALUES ('newairmail.com');
+INSERT INTO `sensitive_words` (`words`) VALUES ('temp-mail.org');
+INSERT INTO `sensitive_words` (`words`) VALUES ('linshiyouxiang.net');
+INSERT INTO `sensitive_words` (`words`) VALUES ('zwoho.com');
 
 
 -- ----------------------------
@@ -1148,7 +1154,7 @@ CREATE TABLE `ss_node_ip` (
   PRIMARY KEY (`id`),
   INDEX `idx_node` (`node_id`),
   INDEX `idx_port` (`port`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='在线IP';
 
 
 -- ----------------------------
@@ -1159,7 +1165,7 @@ CREATE TABLE `rule` (
 	`type` CHAR(10) NOT NULL DEFAULT 'domain' COMMENT '类型:domain-域名(单一非通配)、ipv4-IPv4地址、ipv6-IPv6地址、reg-正则表达式',
 	`regular` VARCHAR(255) NOT NULL COMMENT '规则:域名、IP、正则表达式',
 	PRIMARY KEY (`id`)
-) ENGINE=MyISAM COLLATE='utf8_general_ci' COMMENT='规则表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='规则表';
 
 
 -- ----------------------------
@@ -1170,7 +1176,7 @@ CREATE TABLE `ss_node_deny` (
 	`node_id` INT(11) NOT NULL DEFAULT '0',
 	`rule_id` INT(11) NOT NULL DEFAULT '0',
 	PRIMARY KEY (`id`)
-) ENGINE=MyISAM COLLATE='utf8_general_ci' COMMENT='节点访问规则关联表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='节点访问规则关联表';
 
 
 -- ----------------------------
@@ -1184,7 +1190,7 @@ CREATE TABLE `device` (
 	`status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '状态:0-禁止订阅、1-允许订阅',
 	`header` VARCHAR(100) NOT NULL COMMENT '请求时头部的识别特征码',
 	PRIMARY KEY (`id`)
-) COMMENT='设备型号表' ENGINE=MyISAM;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备型号表';
 
 
 -- ----------------------------
@@ -1214,6 +1220,48 @@ INSERT INTO `device` (`id`, `type`, `platform`, `name`, `status`, `header`) VALU
 	(21, 2, 2, 'ShadowsocksR', 1, 'okhttp'),
 	(22, 2, 2, 'SSRR', 1, 'okhttp');
 
+
+-- ----------------------------
+-- Records of `failed_jobs`
+-- ----------------------------
+CREATE TABLE `failed_jobs` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `connection` text COLLATE utf8mb4_unicode_ci NOT NULL,
+  `queue` text COLLATE utf8mb4_unicode_ci NOT NULL,
+  `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
+  `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
+  `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='失败任务';
+
+
+-- ----------------------------
+-- Records of `jobs`
+-- ----------------------------
+CREATE TABLE `jobs` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+  `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
+  `attempts` tinyint(3) unsigned NOT NULL,
+  `reserved_at` int(10) unsigned DEFAULT NULL,
+  `available_at` int(10) unsigned NOT NULL,
+  `created_at` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `jobs_queue_index` (`queue`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务';
+
+
+-- ----------------------------
+-- Records of `migrations`
+-- ----------------------------
+CREATE TABLE `migrations` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+  `batch` int(11) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='迁移';
+
+
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

+ 33 - 0
sql/update/20190210.sql

@@ -0,0 +1,33 @@
+-- 处理失败的任务
+CREATE TABLE `failed_jobs` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `connection` text COLLATE utf8mb4_unicode_ci NOT NULL,
+  `queue` text COLLATE utf8mb4_unicode_ci NOT NULL,
+  `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
+  `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
+  `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- 任务
+CREATE TABLE `jobs` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+  `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
+  `attempts` tinyint(3) unsigned NOT NULL,
+  `reserved_at` int(10) unsigned DEFAULT NULL,
+  `available_at` int(10) unsigned NOT NULL,
+  `created_at` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `jobs_queue_index` (`queue`)
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- 迁移记录
+CREATE TABLE `migrations` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+  `batch` int(11) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+