Я хочу добиться планирования задач в моем laravel 5.8 проекте. Для этого я создал собственную команду artisan send: credentials
, которая отправляет электронные письма указанным c пользователям в зависимости от их статуса.
sendUserCredentials. php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Mail\credentialsEmail;
use App\Models\userModel;
use Mail;
class sendUserCredentials extends Command
{
protected $signature = 'send:credentials';
protected $description = 'Credentials send Successfully!';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$users = userModel::select(["email","username","role","id"])->where("credentials","NO")->get();
foreach ($users as $key => $user) {
Mail::to($user->email)->send(new credentialsEmail($user));
userModel::where("id",$user->id)->update(["credentials"=>"SEND"]);
}
}
}
Я добавил эту команду в ядро. php, чтобы можно было запустить эту команду с помощью планировщика задач laravel.
kernel. php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
Commands\sendUserCredentials::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('send:credentials')
->everyMinute();
}
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
и т. Д. мой локальный сервер, все работает как чудо, когда я запускаю эту команду php artisan schedule:run
, но на общем сервере, когда я запускаю планировщик с помощью команды cron *****/path/to/project/artisan schedule:run >> /dev/null 2>&1
, это выдает мне такую ошибку
local.ERROR: The Process class relies on proc_open, which is not available on your PHP installation. {"exception":"[object] (Symfony\\Component\\Process\\Exception\\LogicException(code: 0): The Process class relies on proc_open, which is not available on your PHP installation. at /path/to/vendor/vendor/symfony/process/Process.php:143)
НО когда я запускаю команду ремесленника напрямую *****/path/to/project/artisan send:credentials >> /dev/null 2>&1
, используя задание cron, ошибки не возникает, и электронные письма успешно отправляются!