Как настроить Cronjobs в CakePHP - PullRequest
       6

Как настроить Cronjobs в CakePHP

0 голосов
/ 15 сентября 2018

Я пытаюсь настроить cronjobs в cakephp3, я могу создать класс команд

class RescanCommand extends Command { 
public function sendMail() {
    $email = new Email();

    // Sample SMTP configuration.
    Email::setConfigTransport('mailtrap', [
        'host' => 'smtp.mailtrap.io',
        'port' => 25,
        'username' => 'username',
        'password' => 'pass',
        'className' => 'Smtp'
    ]);

    $email->setFrom(['test@test.com' => 'CSV file'])
        ->setTo('test@test.com')
        ->setSubject('CSV Link File')
        ->send('Please find attached a copy of the links');
}

public function execute(Arguments $args, ConsoleIo $io) {
    $this->sendMail();
}
} 

, чтобы настроить cronjob, я должен войти в cpanel и создать cronjob в формате

https://sontest.000webhostapp.com/myscript.php

для настройки cronjob в cakephp Мне нужно написать

          • cd / Application / MAMP / htdocs / music && bin / cake rescan execute

Мой вопрос: как мне сделать cronjob для сервера и получить к нему доступ через cpanel, мне нужен скрипт в webroot для доступа.

любая помощь будет признательна.

1 Ответ

0 голосов
/ 15 сентября 2018

Я не знаю, существует ли какой-либо «канонический» способ сделать это, но у меня есть хорошие результаты с подходом, основанным на создании модифицированного файла bin / cake.php и помещении его в каталог, требуемый хостинг-провайдером (это может быть любойкаталог внутри или вне каталога приложения).Пример файла ниже:

#!/usr/bin/php -q
<?php
require 'path_to/config/requirements.php';
require 'path_to/vendor/autoload.php';

use App\Application;
use Cake\Console\CommandRunner;

$runner = new CommandRunner(new Application('path_to/config'), 'cake'); //path to your app 'config' dir
$command = [
    "", //first can be empty (normally it's 'cake')
    "command", //your command/shell name
];
exit($runner->run($command));

Вы также должны помнить, что файлы, определяющие cronjobs, не должны быть доступны всем (например, помещать их в webroot и делать доступными через web), поэтому вы должны также реализовать кое-чтокоторый разрешает доступ к нему только через службу, которая запускает его на вашем хостинге.

...