3

新的 php并行。它是新的,在任何地方都没有关于它的故障排除,关于它的唯一文档是 php.net 本身,这还不够。

这就是我所做的(根据说明):

  • 安装了最新版本的 WAMP(3.1.9 x64)。
  • 在 WAMP 上安装了最新版本的 PHP(7.3.9)。
  • 将 PHP 添加到 windows 系统环境路径。
  • 将 pthreadVC2.dll 添加到 PHP 文件夹并将 pthreadVC2.dll 添加到 Windows 系统环境路径。
  • 添加php_parallel.dll到 php/ext 目录。
  • 添加extension=parallel到 php.ini。
  • 重新启动了一切。
<?php
# this is my code
$runtime = new \parallel\Runtime();

$future = $runtime->run(function(){
    for ($i = 0; $i < 50; $i++)
        echo "$i";
        
    return "easy";
});

for ($i = 0; $i < 50; $i++) {
    echo ".";
}

花费的时间。现在windows cmd说:
“致命错误:未捕获的错误:在... [我的文件地址]中找不到类'parallel \ Runtime'”
并且wampserver仅在我使用并行的页面上说“连接已重置(firefox错误)” \Runtime 和其他页面工作正常。
如果您根本不知道答案,请恕我直言,不要将我的问题标记为广泛的一件事或任何其他事情。至少给我一些链接。

4

4 回答 4

3

据我所知,要从 PECL 提供的 .dll 安装扩展,您的扩展和 PHP 构建之间需要匹配以下内容,位于phpinfo()

  1. PHP 版本:在PHP Version
  2. 线程安全:发现于PHP Extension Build(TS=threadsafe 或 NTS=not-threadsafe)
  3. 编译器版本:在PHP Extension Build(例如:VS15 或 VS16)中找到
  4. x86 与 x64:发现于Architecture

并行的 PECL 存储库上,您应该检查最新更新的版本,并且包名称是不言自明的,因此您可以选择您想要的,即... 7.3-ts-vc15-x64


注意(现在可能不适用):鉴于有限的构建parallel,您的 PHP 构建必须是:7.3+、TS 和 VC15。通过查看您的 来仔细检查您的情况是否确实如此phpinfo(),并确保您使用的是该x64版本(因为您说您的 PHP 是 x64)。

于 2019-12-03T00:07:51.300 回答
2

正确答案是 JS_Riddler 的帖子(日期为 19 年 12 月 3 日,由 T.Todua 编辑),但我想为 Windows 用户详细说明。

在安装之前,在命令行上,如果你执行“php -v”,你可能会看到如下内容:

PHP 7.3.33 (cli) (built: Nov 16 2021 14:49:44) ( ZTS MSVC15 (Visual C++ 2017) x64 )

不要让“(Visual C++ 2017)”混淆你……重要的是“ZTS MSVC15”,它表示线程安全的构建和运行时库。

还要注意主要和次要版本号:上例中的“7.3”。内部版本号(例如第三个数字,示例中的“33”)无关紧要。

还要注意架构:示例中的“x64”。

主要版本、次要版本和架构需要与您下载的并行版本相匹配,因此对于上面的示例,您需要下载

php_parallel-1.1.4-7.3-ts-vc15-x64.zip

注意:下载并解压并行存档后:

  1. 将 php_parallel.dll 文件复制到 php/ext/php_parallel.dll
  2. 将 pthreadsVC2.dll 复制到 php/pthreadsVC2.dll
  3. 在 php.ini 的某处添加“extension=parallel”,单独一行。

您应该能够从命令行运行“php -v”。如果出现错误,请仔细检查 php.exe(和 pthreadsVC2.dll)是否在您的 PATH 中,以及您在 php/ext 文件夹中的 php_parallel.dll 版本是否与您的 php 可执行文件的主要和次要版本匹配。

另请注意:许多托管公司不使用 ZTS 版本的 php,因此目前看来此扩展主要用于 CLI 开发应用程序。除非您知道您的目标主机支持它,否则不要尝试编写依赖它的生产代码。

于 2021-12-02T03:35:10.710 回答
0

错误日志原来是保护程序。

PHP Startup: Failed to load .../php/php7.4.9/ext/pthreadVC2, The system cannot find the file ..

然后我刚刚从文件名中删除了 .dll ,然后它给出了:

PHP Startup: Invalid library (maybe not a PHP library) 'pthreadVC2' in Unknown on line 0

如果我没记错的话,原来 WampServer(它是内置的 php)不支持多线程/安全线程或类似的,并且不可能在 WampServer 上使用它。无论结果多么有趣,它都可以在CLI中使用。

于 2021-04-24T09:14:27.960 回答
0

我有完全相同的问题。另外,我将文件 pthreadVC2.dll 复制到文件夹 ext 中。当我将此文件移出文件夹时,它工作正常。

文件夹:

  • yourPhpFolder/pthreadVC2.dll
  • yourPhpFolder/ext/php_parallel.dll
于 2021-05-20T08:39:27.053 回答