Есть такая штука как Phing. Это как Ant только Phing.
Позволяет совершать тривиальные задачи по развертыванию проекта на сервере, как то: настройка прав доступа к директориям/файлам, копирование чего то куда то, миграции и т.д. Но вот с заданиями для cron там беда.
Существующие, легко нагугливаемые примеры предлагают писать задания в /etc/cron.d/, куда на обычном shared-хостинге мы естественно не имеем доступа. Ну или предлагают нам sudo, что тоже слегка не то.
Но есть task exec!
Итак:
Позволяет совершать тривиальные задачи по развертыванию проекта на сервере, как то: настройка прав доступа к директориям/файлам, копирование чего то куда то, миграции и т.д. Но вот с заданиями для cron там беда.
Существующие, легко нагугливаемые примеры предлагают писать задания в /etc/cron.d/, куда на обычном shared-хостинге мы естественно не имеем доступа. Ну или предлагают нам sudo, что тоже слегка не то.
Но есть task exec!
Итак:
$ touch build.xml $ nano build.xmlПриведем наш build к следующему виду:
<?xml version="1.0" encoding="UTF-8"?> <!-- Phing build config --> <project name="test" basedir="." default="deploy"> <target name="set_crontab" description="Set Crontab"> <exec command='/bin/echo -en "`crontab -l 2>/dev/null`\n0 * * * * php `pwd`/protected/yiic update\n\n" | crontab - 2>/dev/null' passthru="true" checkreturn="true" /> </target> <!-- Default target --> <target name="deploy" depends="set_crontab"></target> </project>Запустим phing и увидим нечто такое:
$ phing Buildfile: /home/vagrant/build.xml test > set_crontab: test > deploy: BUILD FINISHED Total time: 0.0925 secondsВыполнится буквально следующий код:
/bin/echo -en "`crontab -l 2>/dev/null`\n0 * * * * php `pwd`/protected/yiic update\n\n" | crontab - 2>/dev/nullСказав в той же консоли 'crontab -l' увидим нечто такое:
$ crontab -l 0 * * * * php /home/vagrant/protected/yiic updateCongratulations!