parallel - php sleep multithreading




Pthread funktioniert nicht in PHP (2)

Hier gibt es zwei Probleme:

1) Zuerst müssen Sie den Speicherort der DLL-Dateien korrekt suchen. DLL-Dateien sollten wie folgt platziert werden:

C:\PHP5\pthreadVC2.dll
C:\PHP5\ext\php_pthreads.dll

und in der Datei php.ini sollte nur php_pthreads.dll als aktiviert sein

extension=php_pthreads.dll

2) Suchen Sie nach Versionen von PHP und DLL-Dateien.

Mein PHP ist VC6 Build und DLL-Datei ist VC9. Deshalb wurde das Modul nicht installiert. Ich habe diesen Unterschied mit " php -m " herausgefunden.

Da es keine VC6-Build von DLL-Datei gibt, habe ich VC9 Build von PHP verwendet und PThreads und das Programm funktioniert perfekt.

Hinweis: Die beiden oben genannten Lösungen haben meine Probleme gelöst. Aber wenn Sie immer noch Fehler bekommen, überprüfen Sie, ob Sie Debugger xdebug oder zend aktiviert haben. Deaktivieren Sie sie und versuchen Sie es erneut.

Ich habe die PHP Pthreads DLL-Datei von http://windows.php.net/downloads/pecl/releases/pthreads/ heruntergeladen und in php.ini wie folgt aktiviert:

extension=pthreadVC2.dll
extension=php_pthreads.dll

Ich habe den folgenden Beispielcode verwendet:

<?php
class AsyncOperation extends Thread 
{
    public function __construct($arg){
        $this->arg = $arg;
    }

    public function run(){
        if($this->arg){
            printf("Hello %s\n", $this->arg);
        }
    }
}

$thread = new AsyncOperation("World");
if($thread->start())
    $thread->join();

Wenn ich den Code ausgeführt habe, erhalte ich den folgenden Fehler:

Schwerwiegender Fehler: Klasse 'Thread' nicht in C: \ htdocs \ threads \ AsyncOperation.php in Zeile 2 gefunden. Aufrufstack: 0.0008 333464 1. {main} () C: \ htdocs \ threads \ AsyncOperation.php: 0


Wenn Sie PHP in einem anderen Ordner als C: / PHP5 installiert haben, ist es gut, pthreadVC2.dll zu httpd.conf hinzuzufügen. Andernfalls kann Pthreads- Erweiterungsmodul es nicht finden.

LoadFile "c:/not_default_php5/pthreadVC2.dll"

HINWEIS: Wenn nach dem Hinzufügen von LoadFile immer noch Apache DLL nicht finden kann, entfernen Sie einfach die Loadfile-Zeile und kopieren Sie die DLL in den Apache bin-Ordner.

c:/apache_home/bin/pthreadVC2.dll




php