Допустим, у меня есть класс php, хранящийся в одном файле. Если этот класс используется в нескольких проектах, расположенных на разных хостах (или даже разными пользователями), будет очень сложно обновить этот класс.
Как я могу себе представить, это может быть сделано автоматически с помощью этой процедуры:
Класс PHP (или файл) хранится в одном репозитории.
На каждом хосте, использующем этот класс, должно быть задание cron, чтобы проверить, есть ли у этого (этих) классов (или файлов) какое-либо обновление.
Если ДА, этот файл загружается и заменяет существующий.
Я мог бы сделать все это сам, но я полагаю, что должны быть такие готовые решения. Мои существующие репозитории, такие как github, имеют такую функциональность или любую другую …
Вопросы:
Является ли описанный мной сценарий оптимальным для этой функции?
Есть ли готовые к использованию решения? (надеясь на бесплатное решение)
Мы используем композитор управлять нашими зависимостями, которые можно загружать из частных репозиториев. Разработайте свой общий класс внутри проекта, а затем установите его как зависимость ваших последующих проектов внутри composer.json
, После обновления вашего исходного проекта (который содержит ваши общие файлы) ваши последующие проекты могут получить эти изменения, просто запустив $ composer update
Вы можете настроить нижестоящие проекты так, чтобы они указывали на ваш верхний проект, как это внутри composer.json
:
{
"require": {
"myname/myupstreamproject": "dev-master"},
"repositories": [
{
"type": "git",
"url": "[email protected]:myname/myproject.git"}
]
}
Если вы используете теги в своем репо, вы можете заменить "dev-master"
с соответствующими синтаксис управления версиями если по какой-то причине вам нужно, чтобы в некоторых ваших проектах использовались разные версии ваших общих файлов.
проверьте использование rsync. rsync может использоваться для репликации файлов / папок в нескольких системах и может запускаться из исходной системы для развертывания изменений, если таковые имеются (инкрементно). Или, если класс находится в github или другой системе хранилища, напишите автоматизированное задание, которое выполняет обновление на регулярной основе.