Пума Тайланд: Условия задачи: "если сервер 1 по какой-то причине не смог обработать запрос, то он (запрос) отправляется на сервер 2." - Запросы на сервер 2 идут пока нет запросов на сервер 1. Выходит, когда сервер 1 поднимется, он обновит Бд и сможет теоретически дальше работать
Пума Тайланд: да
Тогда нужно писать всегда только в одну Бд, на сервере 1, например.
Читать всегда с localhost.
Если сервер 2 пытается писать в Бд на сервере 1 и она недоступна, то писать в Бд на сервере 2. Тогда после восстановления БД на сервере 1 master-master должен подтянуть данные.
Тогда нужно завести сессию и сделать токен пользователю. В форму вставлять уникальный токен формы + уникальный токен юзера.
При загрузке фоток user_id и ad_id неизветны, поэтому нужно записать у фотки user_token, ad_token.
При сохранении в скрипте 3 (после создания записи юзера и объявления) ищем все фотки по user_token и ad_token (теоретически, у одного юзера может быть много форм, тогда будут фотки с одинаковым user_token, но разными ad_token ).
Валерий Рябошапко:
1) Ну если юзер у нас авторизован, то сессия так или иначе есть (не важно в каком виде)
2) Я когда сначала написал про токен, я чет забыл, что юзер авторизован и предлагал некого абстрактного неавторизованного посетителя сайта таким образом авторизовать. Но если авторизация есть, то в токене с привязкой к юзеру смысла нет. Нужна как раз привязка к уникальной форме.
3) В любом же случае наверняка в форму планируют еще вставить CSRF токен, т.е. все-равно сессия будет, без нее никуда в наше время ))
Валерий Рябошапко: Можно при генерации формы создать предварительный айдишник объявления и хранить его в hidden input. Его же передавать при ajax запросе на создание фоток. В скрипт 3 он из формы сам передастся. После создания объявления у фоток предварительный айдишник удалить, а новый вписать в нужное поле.
Таким образом один юзер сможет независемо открыть много окон с фоомами и в каждом сделать разные объявы.
Валерий Рябошапко: Работает если на сайте 1 человек в день )))
А так пока один юзер только заливает фотки, второй юзер присобачивает их к своему новому объявлению.
В итоге 1 объявление будет с лишними фотками, а второе без фоток ))
CodeInside:
3) в phpMyAdmin делать поля NOT NULL при создании таблицы (не ставить чекбокс NULL)
4) По поводу подсистемы: MEMORY юзают для хранения оперативных данных в ОЗУ! Т.е. это энергозависимая память, при рестарте сервера данные будут утеряны!
Обычно выбирают между MyISAM и InnoDB в пользу InnoDB из-за поддержки транзакций хотя бы.