Я пишу новый движок для моих сайтов PHP, который имеет функцию кэширования данных.Теперь мне интересно, возможно ли вмешательство между этими сценариями.Рассмотрим следующий пример:
Допустим, многие пользователи посещают веб-сайт, связанный с фотографией, и два из них запускают два сценария практически в одно и то же время.
Скрипт 1 удаляет пользователя с именем 'FooBar' и все его фотографии из базы данных.
Скрипт 2 отображает фотографию № 12345 (сделанную FooBar).
- (Скрипт 1) проверяет, существует ли пользователь 'FooBar'.Сохраните его идентификатор в переменной
$id
. - (сценарий 2), чтобы проверить, существует ли фотография с номером 12345.Хранить идентификатор владельца внутри переменной
$owner
. - (сценарий 1)
query("DELETE FROM users WHERE id='$id' ");
- (сценарий 2)
query("SELECT name FROM users WHERE id='$owner' ");
// ошибка здесь - (сценарий 1)
query("DELETE FROM photos WHERE owner='$id' ");
Как мы видим, сценарий 2 обнаруживает, что фотография существует, но ее владелец уже удален.
Вопрос : обрабатываются ли сценарии PHP по порядку (поэтому представленный сценарий был бы невозможен)?Если нет, что я могу сделать, чтобы предотвратить такие ошибки при отправке нескольких запросов в одном скрипте?
Большое вам спасибо.
Спасибо за ваши ответы.Представленный сценарий является лишь примером, и я знаю, что это можно сделать лучше.Поэтому при создании большого веб-сайта я должен постоянно знать, что данные могут быть изменены во время выполнения.
Но в этом случае я просто не могу доверять любой информации, хранящейся в переменной в php.Как вы справляетесь с такими проблемами?Обновление или выборка всех данных в одном запросе?