Laravel 5 如何在计划时间内发送报告
在Laravel5.8中,我有一个带有“发送电子邮件”按钮的报告,单击该按钮可以运行ajax请求,其中包含报告的内容 在“report_html”变量中,控制如下内容:Laravel 5 如何在计划时间内发送报告,laravel-5,scheduling,Laravel 5,Scheduling,在Laravel5.8中,我有一个带有“发送电子邮件”按钮的报告,单击该按钮可以运行ajax请求,其中包含报告的内容 在“report_html”变量中,控制如下内容: public function sentReportEmailContent() { $request= request(); $requestData= $request->all(); $report_html= $requestData['report_html']; $logge
public function sentReportEmailContent()
{
$request= request();
$requestData= $request->all();
$report_html= $requestData['report_html'];
$loggedUser= Auth::user();
$reportAvailableSpacesByZonesAcceptorsArray = config('app.reportAvailableSpacesByZonesAcceptorsArray', []);
$site_name = config('app.name', '');
if ( count($reportAvailableSpacesByZonesAcceptorsArray) == 0 ) {
return response()->json(['error_code' => 1, 'message' => 'There are no receiver emails specified !'], HTTP_RESPONSE_INTERNAL_SERVER_ERROR);
}
$to= $reportAvailableSpacesByZonesAcceptorsArray[0];
$subject= 'Available Spaces By Zones report was sent at ' . $site_name;
$additiveVars= [ 'html'=> $report_html ];
unset($reportAvailableSpacesByZonesAcceptorsArray[0]);
$cc= $reportAvailableSpacesByZonesAcceptorsArray;
\Mail::to($to)->send( new SendgridMail( 'emailContainer', $to, $cc, $subject , $additiveVars ) );
return response()->json(['error_code' => 0, 'message' => '', 'user'=> $loggedUser->id], HTTP_RESPONSE_OK);
}
并使用Sendgrid将服务报告发送给config ok中定义的用户
现在我需要运行此报告并向调度器中的接收者发送电子邮件
我创建了一个新命令:
php artisan make:command reportAvailableSpacesByZones --command=report:available-spaces-by-zones
其处理方法如下:
public function handle()
{
\Log::info( 'Report run # ' . time() );
}
在预定时间内触发。
但我如何才能像手动操作一样运行报告并发送其内容呢
修改的块:
我的报告由(本地)url运行:
我重新制作,以便如果要运行url
在浏览器中打开报告,并选中“打开时发送电子邮件”javascript函数,以通过
电子邮件(使用Sendgrid服务)页面内容(实际报告)
我试图通过cron任务触发命令:
在app/Console/Commands/reportAvailableSpacesByZones.php中:
class reportAvailableSpacesByZones extends Command
{
public function handle()
{
\Log::info( 'Report From inside app/Console/Commands/reportAvailableSpacesByZones.php run # ' . time() );
return redirect()->to('/admin/report/available-spaces-by-zones/send-email-on-open');
}
我看到日志信息,但没有电子邮件报告。
哪条路正确
谢谢 在app/Console/Kernal.php中将命令添加到受保护的命令数组中
'App\Console\Commands\reportAvailableSpacesByZones',
在scheudle方法中添加
$schedule->command('cron:reportAvailableSpacesByZones')->weeklyOn(2, '20:30');
其他可用命令
在服务器crontab上
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
请看修改后的方块