Как настроить работу cron через PHP (не CPanel)?

Как настроить работу cron через PHP (не CPanel)?

Большинство Linux-систем с установленным crond предоставляет несколько каталогов, в которых вы можете настроить работу с помощью:

 /etc/cron.d/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/ ... 

Идея здесь состоит в том, чтобы создать файл в одном из этих каталогов. Вам нужно будет установить правильные разрешения / права собственности на эти (или на одну из этих) директорий, чтобы пользователь мог запустить PHP-скрипт (пользователь Apache, если это веб-скрипт или любой пользователь CLI, если используется CLI).

Самое простое – создать пустой файл, присвоить ему правильное разрешение / право собственности и добавить скрипт PHP / изменить его.

Например:

 $ touch /etc/cron.d/php-crons $ chown www-data /etc/cron.d/php-crons 

Затем в PHP:

 $fp = fopen('/etc/cron.d/php-crons', 'a'); fwrite($fp, '* 23 * * * echo foobar'.PHP_EOL); fclose($fp); 

Если то, что вы получаете, это динамическое добавление большого количества заданий в crontab из вашего приложения, лучший способ сделать это – вручную добавить ОДИН cron job:

 php -f /path/to/your/runner.php 

Сохраните свои задания, которые вы будете добавлять в cron вручную в таблице (или одной таблице для типа задачи), а затем попросите вашего бегуна пройти через таблицу (ы) каждую минуту / час / день / что угодно и выполнить все те, которые должен быть выполнен в это время.

С чистого PHP я создам деамон, который будет управлять этим (этим) заданием cron.

как его создать: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/ для начала

Поиск файла crontab непросто на общем хостинге, и нет уверенности, что cron снова прочтет этот файл, пока он уже запущен. На самом деле я лучший способ использовать команду corntab.

Если у вас нет доступа к оболочке, вы можете использовать, например, PHPShell. Попробуй это.

  • Уплотните файл txt через FTP с заданиями в crontab fomat, например

    5 * * * * /some/file/to/run.sh > /dev/null

(не забудьте поставить новую строку в конце этой строки)

  • Войдите в свой PHPShell и запустите

    crontab uploded_filename.txt

  • Не забудьте изменить права доступа к файлам

    chmod 775 uploded_filename.txt

  • Проверьте работу cron, используя

    crontab -l

ура

Существует эмбарго на использование PHP для редактирования crontabs, который существует с 2004 года. Вам не разрешается делать это, если вы живете за пределами Соединенных Штатов, обратитесь в местное правительственное агентство.

Но если серьезно, вы всегда можете называть «crontab -» системным вызовом. Если вам нужно сделать это для некоторых пользователей, кроме веб-сервера, вам понадобится магия ssh или sudo. Но все это кажется плохой идеей.