я не смог запустить расписание ремесленников: запустить команду cron на виртуальном хостинге - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу добиться планирования задач в моем 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, ошибки не возникает, и электронные письма успешно отправляются!

1 Ответ

0 голосов
/ 12 февраля 2020

Ошибка

The Process class relies on proc_open, which is not available on your PHP installation.

вызвана тем, что служба отчетов об ошибках Flare включена в режиме отладки. Чтобы решить эту проблему, следуйте приведенным ниже инструкциям.

Добавьте файл /config/flare.php и добавьте нижеприведенное содержимое

'reporting' => [
    'anonymize_ips' => true,
    'collect_git_information' => false,
    'report_queries' => true,
    'maximum_number_of_collected_queries' => 200,
    'report_query_bindings' => true,
    'report_view_data' => true,
],

И очистите кэш Bootstrap с помощью приведенного ниже команда

php artisan cache:clear && php artisan config:clear

Скорее всего, проблема будет решена. В противном случае проверьте один раз эту ссылку

...