Использование моделей друг друга между 2-мя сайтами на Yii 1.xx?
Есть 2 сайта на Yii 1 (каждый как отдельное приложение), стоит задача сделать виджеты одного на другом, а так же использовать некоторые модели одного сайта на другом (счетчик). Встал вопрос как именно лучше использовать модели (в тч relations) одного на другом. Готового рецепта не нашел, думаю использовать пространства имен и делать 2 компонента db на каждом сайте (условно db1 для работы со своими моделями, db2 для стороннего), поделитесь опытом как лучше реализовать такое?
Ненужное усложнение это пытаться достучаться до одной модели из другого сайта. Так как модель это не просто файлик в вакуме, это часть сайта, которая зависит от его настроек и так далее.
Хотите просто и без усложнений? Скопируйте модель одного сайта в другой, настройте в нем конект к базе другого сайта и берите данные из базы. Хотите правильно делайте апи, это не так страшно как звучит. А то что вы предлагаете, это сложнее и тупее, чем любой из предложенных мною вариантов.
возможно вы и правы, но тогда возникает вопрос с использованием curl: там таймаут в секундах т.е. ограничительный минимум 1 сек, что много если обращаться в виджете (даже если его кешировать один раз возможны тормоза) при условии проблем с соединением. Если делать через команды (CLI по крону например), то тогда придется где-то хранить эти данные - что влечет дополнительные сложности. Не проще ли тогда использовать DAO на одном сайте, используя коннект к другой БД, чем городить огород с REST ради показа одной новости, или я чего-то не понимаю?
Evgeny_Shestakov: >DAO на одном сайте, используя коннект к другой БД Так я же предложил этот вариант как простой. А так у вас посещаемость какая на этих ресурсах? и как часто обновляются данные для виджита, чем кэш не вариант?
Евгений Елчев: посещаемость около 10 000 уников в день +/- 5000 (новости). Вариант с кешем не устраивает как при проблемах с соединением каждый раз при обновлении кеша виджета сайт будет подвисать из-за curl. По идее не очень страшно - ведь это только для одного пользователя за какой-то промежуток времени. Но это потенциально трудно уловимая ошибка в будущем, да и как то это противоречит моим представлениям о красоте решения, ведь один проект не должен зависеть от другого (т.е. пусть лучше ничего не показывает, чем тормозит)