Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5 如何在计划时间内发送报告_Laravel 5_Scheduling - Fatal编程技术网

Laravel 5 如何在计划时间内发送报告

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

在Laravel5.8中,我有一个带有“发送电子邮件”按钮的报告,单击该按钮可以运行ajax请求,其中包含报告的内容 在“report_html”变量中,控制如下内容:

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

请看修改后的方块