相关疑难解决方法(0)

PHP线程和同步

我是PHP的新手,所以要开始我已经决定实现一个单例.

虽然我能够在php中重新创建单例模式,但我不确定如何实现双重检查锁定.

这在PHP中是否可行/需要.我在某处读过PHP不是多线程的?有人可以证实吗?

如果它是多线程的,有人可以向我解释一下lock()或synchronize()在PHP中是如何工作的吗?

谢谢,亨利

php singleton multithreading synchronize double-checked-locking

6
推荐指数
1
解决办法
5865
查看次数

php 7 中的同步块

我来自 java 背景,那里有同步块:

“同步”关键字可防止多个线程同时访问代码块或对象。

java中的示例代码:

public void addName(String name) {
    synchronized(this) {
        lastName = name;
        nameCount++;
    }
    nameList.add(name);
}
Run Code Online (Sandbox Code Playgroud)

现在这个例子突出了 php 和 java 的根本区别(如果我错了,请纠正我)。但是 php 中不存在单例或共享类。因此,当用作单例时,java 代码的给定示例很有意义。因此在请求之间有一个共享对象。遗憾的是,现在这对于 php 似乎不存在,这显然是一个主要缺点。但是要以 php 方式完成,最终会将名称计数写入文件或数据库,从而以这种方式在请求之间共享数据(显然要慢得多)。但问题是一样的:如果 2 个请求同时增加名称计数,那么它就会太少了。

现在第一个问题:php 7 是否存在类似的东西?即同步块

现在我不确定在 php 7 中线程这个词是否真的适用于我所担心的。php 中的一个线程是否也被认为是对 php 文件的单独调用,也就是说foo.php,如果我同时访问foo.php两次,如果同步块存在,是否会一个接一个地执行,或者我有通过扩展类创建一个合适的php线程,Thread然后才算作线程?

php multithreading php-7

3
推荐指数
1
解决办法
2409
查看次数