web-dev-qa-db-ja.com

PHP pthreads:致命的なエラー:クラス 'Thread'が見つかりません

Webサーバーでphp5.5を使用しています。ここで、pthreadを使用します。これが私のphp設定です: http://dd19010.kasserver.com/infophp.php55

このコードを実装した後.....

 <?php

class AsyncOperation extends Thread
{
    public function __construct($threadId)
    {
        $this->threadId = $threadId;
    }

    public function run()
    {
        printf("T %s: Sleeping 3sec\n", $this->threadId);
        sleep(3);
        printf("T %s: Hello World\n", $this->threadId);
    }
}

$start = microtime(true);
for ($i = 1; $i <= 5; $i++) {
    $t[$i] = new AsyncOperation($i);
    $t[$i]->start();
}
echo microtime(true) - $start . "\n";
echo "end\n";

?>

...問題はこのまさにエラーです: 致命的なエラー:クラス「スレッド」が見つかりません。いくつか含める必要がありますか include_once またはそれを機能させるために類似した何か?何をしなければならないのですか?

14
ItsMeDom

こんにちは、私はこの問題に遭遇し、なんとかそれを解決しました。

最初に、VCバージョンのPHPおよびVC拡張機能のバージョン。私の場合、拡張機能pthreads.dllバージョンVC14の http://windows.php.net/downloads/pecl/releases/pthreads/ but my PHP VCバージョンはVC11です。PHPのVCバージョンと一致する下位バージョンを探してください。

Second、多分あなたはPHPページでステップ3を見逃した。それはpthreadVC2.dll別のフォルダーに。完全な手順は次のとおりです。

  1. Phpinfo()を使用して、「PHP拡張ビルド」バージョンを確認します。これを使用できます- http:// localhost /?phpinfo = 1

  2. PHPバージョン(32ビットまたは64ビット)とPHP拡張ビルド(現在使用されているVC11)に一致するpthreadをダウンロードします。ダウンロードにはこのリンクを使用します- http://windows.php.net/downloads/pecl/releases/pthreads/

  3. Zipを解凍します-php_pthreads.dllを「bin\php\ext \」ディレクトリに移動します。 pthreadVC2.dllを「bin\php \」ディレクトリに移動します。 pthreadVC2.dllを「bin\Apache\bin」ディレクトリに移動します。 pthreadVC2.dllを「C:\ windows\system32」ディレクトリに移動します。

  4. Php\php.iniを開き、extension = php_pthreads.dllを追加します

リファレンス: https://secure.php.net/manual/en/pthreads.installation.php

7
Player1

Phpinfoは、スレッドセーフが無効になっているphpがあることを示しています。 pthreadを使用するには、スレッドセーフなバージョンのphpをインストールする必要があります。ただし、これは現在の問題を解決する場合としない場合があります。

pthreadsVC2.dllをWebサービスのbinディレクトリにもコピーする必要がある場合があります。

/etc/php55/fpm/

Php.iniが含まれるフォルダーを探しています。

Php.iniファイルに次の行が追加されていることを確認してください。

extension=php_pthreads.dll
5
Kyohei Kaneko

1)phpファイルを1つ作成します
phpinfo(); ->実行
例:Info
PHPバージョン:5.6.31
コンパイラー:MSVC11(Visual C++ 2012)
アーキテクチャ:x64

2)ウェブサイトにアクセス:
http://windows.php.net/downloads/pecl/releases/pthreads/
例2.0.9ファイル
コンパイラ:VC11
Architecture:x64
php_pthreads-2.0.9-5.6-ts-vc11-x64。Zipダウンロード。

3)php_pthreads.dllおよびpthreadVC2.dllを抽出します。
wamp\bin\php\php5.6。31\ext \->copy php_pthreads .dll
wamp\bin\php\php5.6。31 \->copy pthreadVC2.dll
wamp\bin\Apache\apache2.4.27\bin->copy pthreadVC2.dll

4)php.iniを編集します
wamp\bin\Apache\apache2.4.27\bin \php.ini\->extension = php_pthreads.dllを追加
wamp\bin\php\php5.6。31 \php.ini\->拡張子の追加= php_pthreads.dll

5)Now Restart Wamp

3
Murat Çakmak

私はWAMPを使用していますが、pthreadVC2.dllは代わりにApacheフォルダーに移動する必要があることがわかりました。

C:\ wamp\bin\Apache\apache2.4.9\bin

README.md で記述されているものとは異なり、PHPフォルダーに置く必要はありませんが、php_pthreads .dllは引き続き次の場所に移動する必要があります。

C:\ wamp\bin\php\php5.5.12\ext

この後、このファイルを検索します。

C:\ wamp\bin\Apache\apache2.4.9\bin\php.ini

;extension=php_pgsql.dllの場合、extension=php_pthreads.dllを新しい行に追加します(はい、Apacheフォルダーのbin\php.iniで、PHPフォルダー内のものではありません) )。

WAMPを終了して再起動します。 WAMPメニューのPHP> PHP extensions)、新しいphp_pthreads拡張。

1
Armfoot

デフォルトでは、スレッドはPHPに実装されておらず、phpinfoによるとロードされていないようです。モジュールのセットアップ/設定方法については、 PHPマニュアル をご覧ください。

0
Paul

Php.iniファイルに拡張機能を含める必要があると思います。これは、設定に表示されないためです。各ライブラリにはMySQLのような独自のセクションがあることがわかりますが、スレッドにはそのようなセクションはありません。私はスレッドを使用したことはありませんが、そこから始めるのに適した場所であるはずです。

0
Hristo Petev