Как настроить работу 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. Но все это кажется плохой идеей.