特别配置篇
2026年1月12日大约 4 分钟
配置特别篇
说明
laravel-fast-api组件包在开发中,考虑业务数据的放置以及兼容性在开发之处就对配置文件做了一些调整.考虑到laravel框架版本不同,配置文件也会有微调.
特别在这里把修改的配置文件需要注意核对的地方逐一列举出来
config\app.php
一时区配置
'timezone' => 'Asia/Shanghai',二语言配置
//'fallback_locale' => 'en',
'fallback_locale' => env('APP_FAKER_LOCALE','en'),config\auth.php
guards 守卫
提示
这是自定义添加
'phone' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'admin_token'=>[
'driver'=>'Admin-Token'
],
'phone_token'=>[
'driver'=>'Phone-Token'
]providers 提供者
提示
这是自定义添加
'users' => [
'driver' => 'eloquent',
'model'=>\App\Models\LaravelFastApi\V1\User\User::class
],
'admin' => [
'driver' => 'eloquent',
'model' => \App\Models\LaravelFastApi\V1\Admin\Admin::class
],config\database.php
一Mysql配置
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),'prefix' => env('DB_PREFIX',''), 'strict' => env('DB_STRICT',true), 'engine' => env('DB_ENGINE','MyISAM'),改完之后在mysql下面添加
提示
总之是要在mysql下面添加和mysql完全一致的ds_0连接,这个是分库分表初始化的关键,
'options'这个配置项在laravel13版本中做了改变,因此特别提醒
// 新增:ds_0连接(和mysql完全一致,后期扩容时统一用ds_*命名)
'ds_0' => [
'driver' => 'mysql',
'url' => env('DB_URL_DS_0', env('DB_URL')),
'host' => env('DB_HOST_DS_0', env('DB_HOST', '127.0.0.1')),
'port' => env('DB_PORT_DS_0', env('DB_PORT', '3306')),
'database' => env('DB_DATABASE_DS_0', env('DB_DATABASE', 'laravel')). '_ds_0',
'username' => env('DB_USERNAME_DS_0', env('DB_USERNAME', 'root')),
'password' => env('DB_PASSWORD_DS_0', env('DB_PASSWORD', '')),
'unix_socket' => env('DB_SOCKET_DS_0', env('DB_SOCKET', '')),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'prefix_indexes' => true,
'strict' => env('DB_STRICT', true),
'engine' => env('DB_ENGINE', 'InnoDB'),
],
// 【后期扩容用】示例:ds_1连接(现在不用配,扩容时新增即可)
// 'ds_1' => [
// 'driver' => 'mysql',
// 'url' => env('DB_URL_DS_1'),
// 'host' => env('DB_HOST_DS_1', '127.0.0.1'),
// 'port' => env('DB_PORT_DS_1', '3306'),
// 'database' => env('DB_DATABASE_DS_1', 'laravel_ds_1'). '_ds_1',
// 'username' => env('DB_USERNAME_DS_1', 'root'),
// 'password' => env('DB_PASSWORD_DS_1', ''),
// 'unix_socket' => env('DB_SOCKET_DS_1', ''),
// 'charset' => env('DB_CHARSET', 'utf8mb4'),
// 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
// 'prefix' => env('DB_PREFIX',''),
// 'prefix_indexes' => true,
// 'strict' => env('DB_STRICT',true),
// 'engine' => env('DB_ENGINE','InnoDB'),
// ],redis
default配置项
'read_write_timeout' => 0,cache配置项
'read_write_timeout' => 0,添加队列和广播
改完上面两个配置项再在下面添加队列和广播,配置细节保持一致即可
'queue'=>[
...
],
//注意广播存储的位置取决于队列,因此应该保持跟队列一致
'broadcast'=>[
...
]config\queue.php
redis配置项
'connection' => env('REDIS_QUEUE_CONNECTION','default'),'block_for' => 5,改好之后添加一个job配置项,配置一同redis一致
'job' => [
...
],config\mail.php
添加
'exception'=>
[
'email'=>env('MAIL_USERNAME'),
],config\broadcasting.php
提示
这里提示一下,如果轻量级可以用这套配置,如果需要高并发,建议使用云服务的RabbitMQ
初次安装
php artisan install:broadcasting --reverb会自动创建
创建 config/broadcasting.php 配置文件和 routes/channels.php 文件
default配置项
如下所示方便调试
'default' => env('BROADCAST_DRIVER', 'log'),connections配置项
在connections配置项中添加一个redis链接,或者确保有redis链接,配置如下:
'redis' => [
'driver' => 'redis',
//'connection' => 'default',
'connection' => env('REDIS_BROADCAST_CONNECTION','default'),
],配置 bootstrap\app.php
在withRouting中添加或者确保有下面这一行
channels: __DIR__.'/../routes/channels.php',添加:
use Illuminate\Console\Scheduling\Schedule;
use App\Console\Commands\LaravelFastApi\V1\ExecuteTotalCommand;链式调用添加
->withSchedule(function (Schedule $schedule): void {
//数据库备份
mysqlBak($schedule);
//设置日志权限
makeLogAuth($schedule);
//修改日志的属主和属组
changeLogUserAndGroup($schedule);
//测试用
//$schedule->command(ExecuteTotalCommand::class)->everyThreeMinutes();
// $schedule->command(ExecuteTotalCommand::class)->dailyAt('5:00');
})执行的方法
提示
以下仅为示例,注意上线前,需要把{$directiory}替换为项目的绝对路径
/**
* 数据库备份
*
* @param Schedule $schedule
* @return void
*/
if (!function_exists('mysqlBak')) {
function mysqlBak(Schedule $schedule)
{
//测试用 每三分钟
//$schedule->exec('source {$directiory}/cron/mysql_bak.sh')->everyThreeMinutes()->timezone('Asia/Shanghai');
//每天凌晨零点40执行数据库备份
// $schedule->exec('source {$directiory}/cron/mysql_bak.sh')->dailyAt('00:40')->timezone('Asia/Shanghai');
}
}
/**
* 设置日志权限任务
*
* 每分钟执行一次chmod命令,修改Laravel日志文件的权限
* 使用Asia/Shanghai时区,
*
* @param Schedule $schedule 任务调度器实例
* @return void
*/
if (!function_exists('makeLogAuth')) {
function makeLogAuth(Schedule $schedule)
{
$schedule->exec('chmod -R 777 {$directiory}/storage/')->cron('*/1 * * * *')->timezone('Asia/Shanghai');
}
}
/**
* 设置日志用户和组任务
*
* 每分钟执行一次chown命令,修改Laravel日志文件的用户和组
* 使用Asia/Shanghai时区,
*
* @param Schedule $schedule 任务调度器实例
* @return void
*/
if (!function_exists('changeLogUserAndGroup')) {
function changeLogUserAndGroup(Schedule $schedule)
{
$schedule->exec('chown root:root {$directiory}/storage/logs/*')->cron('*/1 * * * *')->timezone('Asia/Shanghai');
}
}