Windows PHP 安装 pthreads 扩展

pthreads 是一组允许用户在 PHP 中使用多线程技术的面向对象的 API。 它提供了创建多线程应用所需的全套工具。 通过使用 Thread, Worker 以及 Threaded 对象,PHP 应用可以创建、读取、写入以及执行多线程应用,并可以在多个线程之间进行同步控制。

建议使用 parallel 作为替代。

不可以在 web 服务器环境中使用 pthreads 扩展, PHP 多线程开发仅限于命令行模式的应用。

只能在 PHP 7.2+ 版本中使用 pthreads (v3) 扩展, 在 PHP 7.0 和 7.1 版本中,ZTS 模式是不安全的。

摘自:
https://www.php.net/manual/zh/intro.pthreads.php

本文以 php 5.6.9 为示例,7.0 也可按如下进行。

1、确定当前是否安装

C:\Users\Administrator>D:\php\php-5.6.9\php -m | grep pt
mcrypt
pthreads

如果存在 pthreads 则表明已经安装。

2、确定 PHP 编译信息

C:\Users\Administrator>D:\php\php-5.6.9\php -i | more

你可以看到 phpinfo() 信息。需要留意:

Compiler => MSVC11 (Visual C++ 2012)
Architecture => x86
PHP API => 20131106
PHP Extension => 20131226
Zend Extension => 220131226
Zend Extension Build => API220131226,TS,VC11
PHP Extension Build => API20131226,TS,VC11

由此可知
x86 环境,MSVC11 编译的并且是线程安全的(TS),API版本是 API220131226;如果是 NTS 则表明是非线程安全的。将不能使用 pthreads 扩展。
另外 pthreads 只能在 CLI 模式下使用。

在 https://windows.php.net/downloads/pecl/releases/pthreads/ 手动筛选
版本对应关系。

也可以通过此表:

PHP 版本pthreads 版本下载
以下列表仅供参考,并不保证最新,请手动查询最新版本
7.0-ts-vc14-x642.0.9下载
5.4-ts-vc9-x86
5.5-ts-vc11-x64
5.5-ts-vc11-x86
5.6-ts-vc11-x64
5.6-ts-vc11-x64
5.6-ts-vc11-x86
7.0-ts-vc14-x643.1.6下载
7.0-ts-vc14-x86

3、下载对应版本

像 PHP 5.6 人工对比,对应 2.0.9。

则在,
php_pthreads-2.0.9 中,
php_pthreads-2.0.95.6tsvc11x86.zip,便是所需要的扩展。
其中:2.0.9 是 pthreads 版本。5.6 是 PHP 版本 TS 表明是线程安全。vc11 表明编译器,x86 表明编译环境。
这些基于信息 php -i 中的信息一致才可以。

否则会报,

加载错误的扩展在 php -v 命令时,会报以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library ‘D:/php/php-5.6.9/ext\php_pthreads.dll’

或者,类似以下报错消息:
PHP Warning: PHP Startup: pthreads: Unable to initialize module
Module compiled with module API=20121212
PHP compiled with module API=20131226
These options need to match in Unknown on line 0

这都表明 php_pthreads 版本号、编译环境、API 版本不一致。你需要下载正确版本的扩展。

4、复制 dll 文件

打开下载的压缩包:
并将 php_pthreads.dll 复制到 php-5.6.9\ext 目录下。
将 pthreadVC2.dll 复制到 php-5.6.9 目录下。

5、修改配置

php.ini 配置文件中,搜索 extension_dir 项,
找到

;extension_dir = “ext”

并删除前面的 ; 号。

extension_dir = “ext”

搜索 Windows Extensions 项,他的下方有很多已经加载的扩展(dll 文件),在其中新增一行:

extension=php_pthreads.dll

保存配置配置,并在命令行中,输入 php -v 无报错,将显示 PHP 版本信息,表明扩展加载成功。

至此本文结束。

另外,Linux 下参考:

相关:

发表评论

电子邮件地址不会被公开。 必填项已用*标注