Запуск Cronjob на 1 & 1 Shared Hosting [Laravel] - PullRequest
0 голосов
/ 05 июля 2018

В моем приложении Laravel я создал запланированное задание, как определено в предыдущем вопросе, который я задал . По сути, он захватывает данные и обновляет несколько таблиц.

Я следовал за справочной статьей 1 и 1 о создании cronjobs .

Подводя итог этой статье, он сказал следующее.

SSH к вашему серверу, для которого вы хотите настроить новый cronjob, используйте whereis php , чтобы найти местоположение вашего PHP Binary, затем используйте команду crontab для доступа crontab и добавьте новую работу.

Для этого потребуется путь PHP и путь к скрипту, который должен быть запущен.

Проблема в том, что когда я запускаю эту команду, я получаю следующее.

Нет crontab для [имя пользователя]

Итак, я тогда гуглил и, похоже, некоторые общие хосты не позволяют вам использовать или даже получать доступ к crontab.

На моем сервере общего хостинга путь к php-7.1-cli выглядит следующим образом /usr/bin/php7.1-cli

Теперь Artisan является частью Laravel и требует более высокую версию PHP, чем та, что находится в \ usr \ bin \ php

Учитывая это, для cronjob я думал, что смогу сделать что-то вроде этого:

* * * * * /usr/bin/php7.1-cli /path/to/artisan schedule:run >> /dev/null 2>&1

Или

* * * * * /usr/bin/php7.1-cli /path/to/mynewable/artisan schedule:run >> /dev/null 2>&1

Моя структура папок выглядит следующим образом:

root
    /mynewable

Но когда я запускаю одну из этих команд, ничего не происходит.

1 & 1 также имеет встроенного создателя задания cron, но это позволяет мне только указать URL-путь к файлу, который будет запускать необходимый скрипт.

enter image description here

Мне мешают использовать crontab? В этом случае указание URL-адреса кажется нецелесообразным, поскольку пользователю не нужно проверять, но создание пути в веб-маршрутах для запуска планировщика Laravel кажется небольшой дырой в безопасности.

1 Ответ

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

Вы можете создать исполняемый файл cron.php в вашей общей папке laravel.

exec("/usr/bin/php7.2-cli -f /homepages/x/xxxxx/htdocs/artisan schedule:run 2>&1", $out, $result);

if(!empty($out)) {
    echo implode("<br>\n\n", $out);
}

Теперь вы можете звонить http://example.org/cron.php

Конечно, вы можете поместить cron.php в защищенный каталог, чтобы никто не мог вызвать cron.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...