Я новичок в PHP, поэтому для начала я решил реализовать синглтон.
Хотя я могу воссоздать шаблон singleton в php, но я не уверен, как реализовать блокировку с двойной проверкой.
Это возможно даже в PHP. Я где-то читал, что PHP не многопоточен? Может ли кто-нибудь подтвердить это?
Если он многопоточен, может кто-нибудь объяснить мне, как lock () или synchronize () работают в PHP?
Спасибо, Генри
PHP имеет архитектуру без общего доступа :
- Как и HTTP, каждый запрос отличается
- Общие данные переносятся на уровень хранилища данных
- Избегайте передних контроллеров
Это дает нам:
- Возможность балансировки нагрузки
- Невидимый переход из одного центра обработки данных в другой
- Лучшая модуляция приложений
- Легче разрабатывать и отлаживать
но я не уверен, как реализовать блокировку с двойной проверкой.
В целом за это отвечает уровень базы данных. Стандарт MySQL (innodb) имеет, например, блокировку уровня строки (этого должно быть достаточно для этого).
InnoDB делает блокировку на уровне строк и запускает запросы как незаблокированные последовательные чтения по умолчанию, в стиле Oracle.
Если этого недостаточно, SQL также имеет, например, транзакции, чтобы это произошло.
Books Online определяет транзакцию как «последовательность операций, выполняемых как единая логическая единица работы»
Как и слайды, PHP имеет Share-nothing-Architecture (традиционный), который также подразумевает, что PHP не имеет нити (модели) . Хотя вы можете скомпилировать ( не включается по умолчанию ) PHP, чтобы иметь поддержку процессов fork, которые могут взаимодействовать друг с другом. Когда вы также скомпилируете функции Семафора, вы можете делать такие вещи, как sem_acquire и sem_release . Но в целом это не относится к PHP.