簡體   English   中英

如何在 Windows 和 wampserver 上安裝新的 php parallel (7.2+)

[英]how to install new php parallel (7.2+) on windows and maybe wampserver

新的 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 僅在我使用 parallel\\Runtime 的頁面上說“連接已重置(firefox 錯誤)”,而其他頁面工作正常。
如果您根本不知道答案,請尊重所有不要將我的問題標記為廣泛的問題或任何其他問題。 至少給我看一些鏈接。

據我所知,要從 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 vs x64 :在Architecture找到

並行PECL 存儲庫上,您應該檢查最新的更新版本,並且包名稱是不言自明的,因此您可以選擇所需的一個,即... 7.3-ts-vc15-x64


注意(現在可能不適用):鑒於parallel構建有限,您的 PHP Build 必須是:7.3+、TS 和 VC15。 通過查看您的phpinfo()仔細檢查您的情況是否確實如此,並確保您使用的是x64版本(因為您說您的 PHP 是 x64)。

錯誤日志原來是保護程序。

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 中工作

我有完全相同的問題。 另外,我將文件 pthreadVC2.dll 復制到文件夾 ext 中。 當我將此文件移出文件夾時,它運行良好。

文件夾:

  • yourPhpFolder/pthreadVC2.dll
  • yourPhpFolder/ext/php_parallel.dll

正確答案是 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 開發應用程序。 除非您知道目標主機支持它,否則不要嘗試編寫依賴它的生產代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM