Работа с с етками

Работа с с етками

Существуетмножествоспособоворганизацииработыскодомвпроекте。Однакофиксироватьизменениянепосредственнов大师——веткеGitинапрямуюразвёртыватькодвпродакшенбезтестирования,пожалуй,нелучшийвариант。

Тестировани——эетонетолькомодульныеилифункциональныетесты,ноипроверкаповеденияприложениясиспользованиемреальныхданных。Если вы или а а изаинтересованныестороныможетепросмотретьприложениевтомсамомвиде,вкоторомонопредстанетпередконечнымипользователями,этостановитсяогромнымпреимуществомипозволяетвамразвёртыватьприложениясуверенностью。Особеннополезно,когданетехническиеспециалистымогутпроверятьновуюфункциональность。

Дляупрощенияичтобыизбежатьповторениянаследующихшагахмыпродолжимработув大师——веткеGit,однакодавайтепосмотрим,какэтоможноорганизоватьполучше。

Организация рабо о е е есса сс помощью Git

Созданиеотдельнойветкинакаждуюновуюфункциональностьилиисправлениебага-одинизпростыхиэффективныхвариантоворганизациирабочегопроцесса。

Созданиеветок

РабочийпроцессначинаетсяссозданияветкивGit:

1
git分支-D session -in-db ||真正的
1
Git checkout -b sessions-in-db

Команда из прим мера созда а к еткуsessions-in-dbизветки.Этодействиесоздаётответвлениекодаиконфигурацииинфраструктуры。

Хранение сесси т в ба а е данн

Вероятнов,ыужепонялиизназванияветки,чтодляхранениясессийвместофайловойсистемымыбудемиспользоватьхранилищебазыданных(PostgreSQLвнашемслучае)。

Необходимыешагидляреализацииэтоговполнетипичны:

  1. Создайте но о у у с етку у в Git;
  2. Обновите конф - и а с ob娱乐下载с с с с с с о л о пот еб те тс;
  3. При необходимости на апи и ит т т /или об о о ит т код;
  4. 如果需要更新PHP配置(比如添加PostgreSQL PHP扩展);
  5. Принеобходимостиобновитеинфраструктуру码头工人иPlatform.sh(добавивсервисPostgreSQL);
  6. Протестируйтелокально;
  7. Протестируйтеудалённо;
  8. Выполните сли ние ветки с основно р е етко в;
  9. Разверните в п одак к ене;
  10. Удалитеветку。

Чтобыхранитьсессиивбазеданных,изменитеконфигурационнуюопциюsession.handler_idна DSN базы данн:

1 2 3 4 5 6 7 8 9 10 11
——/ config /包/ framework.yaml+ + + b / config /包/ framework.yaml@@ -8,7 +8,7 @@ framework: #启用会话支持。请注意,只有在对会话进行读写时才会启动会话。#删除或注释此部分以显式禁用会话支持。会话:—handler_id: null+ handler_id: '%env(resolve:DATABASE_URL)%'Cookie_secure: auto cookie_sameite: lax storage_factory_id: session.storage.factory.native

Дляхранениясессийвбазеданныхнамнужносоздатьтаблицу会话.Создадим её с с с ии ии с ии и

1
ob娱乐下载Symfony控制台make:迁移

Отредактируйтефайл,чтобыдобавитьсозданиетаблицывметоде()

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
——/迁移/ Version00000000000000.php+ + + b /迁移/ Version00000000000000.php@@ -21,6 +21,15最终类Version00000000000000 extends AbstractMigration{//这个up()迁移是自动生成的,请根据您的需要修改它+ $ this - > addSql ('+创建表会话(+ sess_id VARCHAR(128) NOT NULL主键,+ sess_data BYTEA NOT NULL,+ sess_lifetime INTEGER NOT NULL,+ sess_time INTEGER NOT NULL+)+ ');+ $this->addSql('CREATE INDEX expiry ON sessions (sess_lifetime)');}公共函数关闭(Schema $ Schema):无效

Примените ми и и и и и а а а а а а анн:

1
ob娱乐下载Symfony控制台原则:迁移:迁移

Протестируйтесайтнасвоёмкомпьютере,просматриваяразличныестраницы。Посколькумыневносилиникакихвизуальныхизмененийипоканеиспользуемсессии,всёдолжноработатькакираньше。

请注意

Пропуститешаги3 - 5,посколькумыповторноиспользуембазуданныхвкачествехранилищасессий。Вглавепро复述нагляднопоказано,насколькопростодобавить,протестироватьиразвернутьновыйсервискакв码头工人,такивPlatform.sh。

Посколькуноваятаблицане”управляется”学说,намследуетнастроить教义так,чтобытаблицанеудаляласьприследующеймиграциибазыданных:

1 2 3 4 5 6 7 8 9 10 11
——/ config /包/ doctrine.yaml+ + + b / config /包/ doctrine.yaml@@ -5,6 +5,8 @@ doctrine: #重要的是:您必须配置您的服务器版本,#在这里或在DATABASE_URL env var(参阅。env文件)#server_version: '14'++ schema_filter: ~^(?!session)~Orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware

Зафиксируйте изм менени в но о о о р ветке:

1 2
Git添加。Git提交-m“配置数据库会话”

Развёртываниеветки

Передразвёртываниемвпродакшен,емыдолжныпротестироватьветкувокруженииемуидентичному。Намнеобходимоубедиться,чтовсёработаеткорректновSymfony—ob娱乐下载—окружении刺激(локал н са а испол з е окружениеdev).

Теперь да а а а т те со дадимPlatform.sh——окружениенаосновеGit -ветки

1
ob娱乐下载Syob直播appmfony cloud:env:delete session -in-db
1
ob娱乐下载syob直播appmfony云:部署

Даннаякомандасоздаётновоеокружениевследующемпорядке:

  • ВетканаследуеткодиинфраструктуруоттекущейGitветки(sessions-in-db);
  • Данные пост т а а а - из осно о о но о о о о окружения (т.е。продакшена)путёмсозданияпоследовательныхслепковвсехслужебныхданных,включаяфайлы(например,загруженныепользователями)ибазыданных;
  • Создаётсяновыйвыделенныйкластердляразвёртываниякода,данныхиинфраструктуры。

Посколькуразвёртываниепроходиттежеэтапы,чтоиразвёртываниевпродакшен,емиграциибазыданныхтакжебудутвыполнены。Этоотличныйспособпроверить,чтомиграцииработаютсданнымивпродакшене。

Окружения, отли и н о о о,насамомделеоченьнанегопохожи,ноестьнебольшиеотличия。,Напримеротправкаэлектронныхписемотключенапоумолчанию。

Послезавершенияразвёртыванияоткройтеновуюветкувбраузере:

1
ob娱乐下载Syob直播appmfony cloud:url -1

Обратитевнимание,чтовсекомандыPlatform.shвыполняютсявпределахтекущейGit -ветки。ВыполненнаявышекомандаоткроетURL -адресдлятолькочторазвёрнутойветкиsessions-in-db.Адрес буде р ри ре е о о так:https://sessions-in-db-xxx.eu-5.platformsh.site/

Протестируйтесайтвновомокружении:выувидитетежеданные,чтоивосновномокружении。

Еслидобавитьновыеконференциивосновноеокружение(),“они н по в тс в окружении”sessions-in-dbинаоборот,таккакокруженияявляютсянезависимымииполностьюизолированнымидруготдруга。

Есликодизменитсявосновнойветк,евывсегдаможетевыполнитьперебазированиеGit -веткииразвернутьобновлённуюверси,юразрешивконфликтывкодеиинфраструктуре。

Втомчислевыможетесинхронизироватьданныесосновногоокружениявокружениеsessions-in-db

1
ob娱乐下载syob直播appmfony云:env:同步

Предварительнаяотладкаразвёртываниявпродакшене

ПоумолчаниювсеPlatform.sh——окруженияиспользуюттеженастройки,чтоиокружение/刺激(то о же, то о окружение刺激вSob娱乐下载ymfony)。Этопозволяетпротестироватьприложениевреальныхусловиях(какивпродакшене)。Такимобразомсоздаётсяощущениеразработкиитестированиянепосредственнонапродакшен——серверах,нобезсвязанныхсэтимрисков。Мненапоминаетэтостарыедобрыевремена,когдамыразвёртывалипроектычерезFTP。

ПривозникновениипроблемывыможетепереключитьсянаSymfonyob娱乐下载——окружениеdev

1
ob娱乐下载syob直播appmfony云:env:调试

Кактолькозакончит,епереключитесьобратнокпродакшен——настройкам:

1
ob娱乐下载Syob直播appmfony cloud:env:debug—off

警告

Никогдане а акти и и и и и и и т т окружениеdevиникогданеиспользуйтепрофилировщикSymfoob娱乐下载ny,находясьвветке,этоприведётктому、чтовашеприложениестанеточеньмедленнымиоткроетмножествосерьёзныхдырбезопасности。

Предварительноетестированиеразвёртываниявпродакшене

Возможностьпредварительногопросмотрабудущейверсиисайтаспродакшен——даннымиоткрываетширокиевозможности:отвизуальногорегрессионноготестированиядотестированияпроизводительности。黑焰- идеал л н р инстр ме ад л т ко рода задач。

Перейдите к а а уПроизводительность,чтобыузнатьбольшепроиспользование黑焰длятестированиякодапередразвёртыванием。

Развёртывание в п одак к ене

Есливыполностьюудовлетвореныизменениямивветкесновойфункциональностью,выполнитеслияниекодаиинфраструктурыв大师——веткувGit:

1 2
Git checkout masterGit合并session -in-db

Иразверните:

1
ob娱乐下载syob直播appmfony云:部署

ПриразвёртываниивPlatform.shотправляютсятолькоизменениявкодеиинфраструктуре;данныеостанутсятакимиже,какибылидоразвёртывания。

Очистка

Взавершениевыполнитеочистку、удаливGit -веткуиPlatform.sh——окружение:

1 2
Git分支-d session -in-dbob娱乐下载Syob直播appmfony cloud:env:delete -e sessions-in-db
此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。