PHP Pthreads最新版本3.1.6(64位)未在Apache

时间:2016-06-28 12:09:21

标签: php windows apache dll pthreads

我正在尝试为PHP安装最新的pthreads扩展3.1.6 64位。

根据作者对pthreads的建议,在http://github.com/krakjoe/pthreads

我已将两个dll放置到所需的位置。

将pthreadVC2.dll(包含在Windows版本中)添加到与php.exe相同的目录中,例如。 C:\ Apache24 \ PHP 将php_pthreads.dll添加到PHP扩展文件夹,例如。 C:\阿帕奇\ PHP \分机

还在Windows \ system32目录中

并在[Apache Http.confd] [1]

中添加了LoadFile

我已经添加了扩展到我的php.ini

php.ini

但Apache不会启动,当我检查apache error.log时,我有以下

  

[Tue Jun 28 11:38:31.184618 2016] [ssl:warn] [pid 8640:tid 352]   AH01909:localhost:443:0服务器证书不包含ID   它与服务器名称匹配

     

[Tue Jun 28 11:38:31.215819 2016]   [core:warn] [pid 8640:tid 352] AH00098:pid文件   C:/Apache24/logs/httpd.pid被覆盖 - 以前的不干净关闭   Apache运行?

我已经将php_pthreads.dll扩展名移到了扩展名列表的顶部并且到了底部,但没有任何乐趣。它不会从这个pthreads dll开始。但是如果我回复一下; extension = php_pthreads.dll,我的Apache会重新启动,但不会使用这个pthreads dll。

这是一个错误还是我做错了什么?

我的系统设置信息很少 Window 7 64位,使用Apache 2.4.x VC14

PHP信息

  • 系统Windows NT NG10676 6.1 build 7601

  • (Windows 7企业版Service Pack 1)AMD64

  • 建造日期2016年6月21日15:08:19

  • 编译器MSVC14(Visual C ++ 2015)

  • 架构x64

  • 启用线程安全

请注意我的系统10,11,14上都安装了所有64位的VC编译器,并且安装了32位以防万一。

请注意,我已尝试过有关pthreads安装的所有先前线程,但它们对我的安装没有帮助。 我已经尝试了每个谷歌页面,但他们只是不工作,任何帮助将不胜感激。如果PHP pthreads设计师可以对这个版本有所了解。

1 个答案:

答案 0 :(得分:2)

Quote from README

  

pthreads v3仅限于在CLI中运行:我花了很多年时间试图解释网络服务器中的线程没有意义,在1,111次提交到pthreads之后我意识到这一点,我的建议是理睬。

     

因此,我提出了一个关于硬性和快速事实的建议:除了CLI之外,您无法安全,明智地使用pthread。

     

感谢收听;)

Quote from blog explaining change from v2

  

...

     

EJB明确禁止程序员按规范创建线程,现代Java甚至没有1:1模型。显然,这主要是因为环境可能被迁移(在服务器集群内移动),在其管理池之外移动线程很难想象。它比禁止创建线程更进一步,它禁止使用同步原语,因为如果在保留锁定的情况下移动节点会发生什么 - 所有地狱都会松动。

     

在Java中,一般不鼓励你在Servlet中手动创建线程,原因与我对pthreads不鼓励的原因相同。

     

虽然并非每个环境都会实际禁止它,但它确实可以运行得很深;每个人都同意在Web响应上下文中创建真实(1:1)线程是一个坏主意。

     

...