环境为Godaddy
,使用Linux
,Mysql
,php 7.2, laravel 5.7
共享托管。
我还没有涉及框架代码。我只是使用Laravel
文档来运行工匠命令和记录信息。
我创建了一个cronjob
,每5分钟运行一次,以运行电子邮件作业的调度程序
会根据注册,生日和其他活动定期发送邮件,并每天备份4次数据库。我在下面描述的日志文件中收到错误:
production.ERROR:SQLSTATE [HY000]:一般错误:2006 MySQL服务器已消失(SQL:从
jobs
中选择*,其中queue
=默认值,而{{reserved_at
为null和available_at
<=时间戳)或(reserved_at
<=时间戳))以id
asc限制1的顺序升序进行更新)。时间戳不同,但查询相同。production.ERROR:SQLSTATE [HY000] [2002]无法通过套接字'/var/lib/mysql/mysql.sock'(2){“ exception”:“ [object](PDOException (代码:2002):SQLSTATE [HY000] [2002]无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器
production.ERROR:在null上调用成员函数beginTransaction() {“ exception”:“ [对象] Symfony \ Component \ Debug \ Exception \ FatalThrowableError(代码:0):
任何计划任务都不会因任何错误而中止或未执行。所有这些计划任务都能完美执行。例如:当我请求发送电子邮件时,它将被发送到相同的作业表中,并且相同的条目很快消失了,并且我将邮件发送到了目的地。奇怪的是,在没有执行任何活动或与应用程序互动时(这意味着没有人与应用程序互动),我经常在此错误之间发生。我没有在查询中发现任何问题,因为我已经在phpMyAdmin
,本地控制台或MySQL workbench
中执行了相同的查询。这是默认的框架查询。
protected $commands = [
//
Commands\SendBirthdayEmail::class,
Commands\SendReminderEmail::class,
Commands\ManageLogs::class,
Commands\BackupDb::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('manage:logfiles')->weekly()->sundays()->at('01:15');
$schedule->command('backup:stdb')->dailyAt('01:20');
$schedule->command('backup:stdb')->dailyAt('05:20');
$schedule->command('email:birthday')->dailyAt('05:55');
$schedule->command('email:reminder')->dailyAt('06:00');
$schedule->command('backup:stdb')->dailyAt('13:45');
$schedule->command('backup:stdb')->dailyAt('19:20');
$schedule->command('backup:stdb')->dailyAt('21:20');
$schedule->command('queue:work --tries=3')->everyFiveMinutes();
}
即使在这些条目之后(应该是处于丢失的连接状态),下一个任务也会根据需要完美执行。
我进行了全面搜索,但找不到作业表以及这些日志条目的原因的问题。总是相同的作业表显示为有问题的查询。