1

我正在使用 Zend HTTP 客户端来实现与第三方服务通信的 Web 客户端。我正在考虑使其成为单例模式,以便每次调用都可以利用服务中的 cookie,这样我们就不需要在每次实例化新版本的客户端时重新登录。

客户端将有多个类与它通信,可能来自代码中的几个不同位置一次尝试。我担心当多个实体尝试一次使用它时,拥有一个单例客户端会导致竞争条件。

这会是 PHP HTTP 客户端中的单例模式的问题吗?如果是这样,有没有其他方法可以让 Zend HTTP 客户端受益,它可以跨多个事务存储和使用 cookie 而不会出现这些问题?

4

1 回答 1

0

由于 PHP 不是多线程的,仅此一项不应该导致竞争条件。

如果同时有多个请求并且您正在使用共享资源(例如服务器上的文件),这是可能的。在这种情况下,您将需要适当的锁定,例如flock().

您还可以为每个会话存储 cookie,即无共享架构;这也应该解决问题。

于 2012-09-28T16:26:43.003 回答