PHP потоки и синхронизация
-
11-10-2019 - |
Вопрос
Я новичок в PHP, поэтому, чтобы начать работу, я решил внедрить Синглтон.
Хотя я могу воссоздать синглтонский рисунок в PHP, но я не уверен, как реализовать блокировку с двумя проверенными.
Это даже возможно/необходимо в PHP. Я где -то читал, что PHP не многопоточно? Может кто -нибудь это подтвердить?
Если он многопоточный, может ли кто -нибудь объяснить мне, как Lock () или Synchronize () работают в PHP?
Спасибо, Генри
Решение
Архитектура совместного использования
PHP имеет Архитектура совместного использования:
- Как и http, каждый запрос отличается
- Общие данные доведены до уровня хранилища данных
- Избегайте передних контроллеров
Это дает нам:
- Возможность загружать баланс
- Невидимое отказование от одного обратного центра в другое
- Лучшая модуляризация приложений
- Легче разрабатывать и отлаживать
Двойная проверка блокировки
Но я не уверен, как реализовать блокировку с двумя проверенными.
В целом, уровень базы данных отвечает за это. Стандарт MySQL (InnoDB) имеет, например, уровень строк блокировка(что должно быть достаточно для этого).
Innodb делает блокировку на уровне строк и запускает запросы как непрерывные последовательные чтения по умолчанию, в стиле Oracle.
Если этого недостаточно, чем SQL, например, транзакции чтобы это произошло.
Книги онлайн определяет транзакцию как «последовательность операций, выполненных как единая логическая единица работы»
Вилка процессов
Как и слайды говорят, что у PHP есть архитектура-доля (традиционная), которая также подразумевает, что у PHP нет поток (модель). Анкет Хотя вы можете компилировать (не включен по умолчанию) PHP, чтобы поддержать вилка процессы, которые могут общаться друг с другом. Когда вы также компилируете Функции семафора Тогда вы можете сделать что -то вроде sem_acquire а также sem_release. Анкет Но в целом это не применяет PHP.