2011-01-22 3 views
12

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

+1

Первой проблемой, с которой вы столкнетесь, является разрешение на это. – Orbling

+0

В поисках da goog вы получаете много примеров работы php с помощью задания cron, но не наоборот. Мне было бы интересно получить ответ на этот вопрос. – Fatmuemoo

+0

http://stackoverflow.com/questions/2264756/cron-jobs-using-php – Abhijit

ответ

8

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

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

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

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

Per Например:

$ 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); 
-2

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

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

2

Если то, что вы получаете в динамически добавлять много рабочих мест CRONTAB сформировать приложение, лучший способ сделать это вручную добавить ONE хрон:

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

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

0

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

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

  • Uplode текстового файла через FTP с работой в кронтабе появляется две, например

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

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

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

    crontab uploded_filename.txt

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

    chmod 775 uploded_filename.txt

  • Проверьте ваши хрон рабочих мест с помощью

    crontab -l

Приветствия

Смежные вопросы