Вызывает ли шаблон синглтона в классе клиента HTTP условия гонки?
Я использую Zend HTTP-клиент для реализации веб-клиента для связи со сторонним сервисом. Я думал о том, чтобы сделать его одноэлементным шаблоном, чтобы при каждом вызове можно было использовать файлы cookie службы, чтобы нам не приходилось повторно входить в систему каждый раз, когда мы создаем новую версию клиента.
Клиент будет иметь несколько классов, взаимодействующих с ним, возможно, из нескольких разных мест в коде, пробуя все сразу. Я обеспокоен тем, что наличие одноэлементного клиента вызовет состояние гонки, когда несколько организаций попытаются использовать его одновременно.
Будет ли это проблемой с одноэлементным шаблоном в PHP HTTP-клиенте? Если да, есть ли какой-либо другой способ получить преимущество от клиента Zend HTTP, который может хранить и использовать файлы cookie для нескольких транзакций, не имея таких проблем?
1 ответ
Поскольку PHP не является многопоточным, это само по себе не должно вызывать состояние гонки.
Это было бы возможно, если есть несколько запросов одновременно, и вы используете общий ресурс (например, файл на вашем сервере). В этом случае вам необходимо иметь надлежащую блокировку на месте, такую как flock()
,
Вы также можете хранить файлы cookie для каждой сессии, то есть для архитектуры без совместного использования; это также должно решить проблему.